The game is played by Alice and Bob. Initially, there are $n$ stones.

The players alternate turns, making a move described below, with Alice going first. The player who becomes unable to make a move loses.

  • In Alice's turn, she must remove a number of stones that is a positive multiple of $A$.
  • In Bob's turn, he must remove a number of stones that is a positive multiple of $B$.

In how many of Game $1$, Game $2$, ..., Game $N$ does Alice win when both players play optimally?

Constraints

  • $1 \leq N ,A,B \leq 10^{18}$
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

$N$ $A$ $B$

Output

Print the answer.


Sample Input 1

4 2 1

Sample Output 1

2

In Game $1$, Alice cannot make a move and thus loses.

In Game $2$, Alice removes $2$ stones, and then Bob cannot make a move: Alice wins.

In Game $3$, Alice removes $2$ stones, Bob removes $1$ stone, and then Alice cannot make a move and loses.

In Game $4$, Alice removes $2 \times 2 = 4$ stones, and then Bob cannot make a move: Alice wins.

Therefore, Alice wins in two of the four games.


Sample Input 2

27182818284 59045 23356

Sample Output 2

10752495144

### 题解
设这一局有 $x$ 个石子,先手取完石子后有 $x'$ 个石子。同时先手取得石子是 $a$ 的倍数,后手取的石子为 $b$ 的倍数
1. 若 $xa$ 且 $a\le b$,先手可以取尽量多的石子,则 $x'=x \bmod a$ 个石子,因为 $x'=(x \bmod a)a$ 且 $a>b$,如果先手取完石子后,$x'\ge b$,那么轮到后手时变成情况 2。所以当且仅当 $x'综上所述,先手必胜的条件是 \((x\ge a)\) 且 \((x \bmod a<b)\)

所以问题转化为有多少个 \(x\in[A,n]\) 满足 \(x \bmod A<b\)

把 \([A,n]\) 的数按照 \(\bmod A\) 的余数分组,每 \(A\) 个为一组。那么共有 \(\left\lfloor\frac{n-A}{A}\right\rfloor\) 个完整的组。每一组里面有 \(\min(a,b)\) 个合法的数。剩下的 \(n \bmod A +1\) 个数里面又有 \(\min(n\bmod A+1,b)\) 个合法的数。我们就可以 \(O(1)\) 求出答案。

注意特判 \(n<A\)

#include<bits/stdc++.h>
#define ll long long
#define p1 998244353
#define p2 1000000007
using namespace std;
ll n,a,b,ans;
int main()
{
scanf("%lld%lld%lld",&n,&a,&b);
if(n<a) printf("0");
else{
n-=a;
ans+=n/a*min(a,b);
n-=n/a*a;
printf("%lld\n",ans+min(n+1,b));
}
return 0;
}

[ARC145B] AB Game的更多相关文章

  1. ab

     ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed ...

  2. 使用ab对nginx进行压力测试

    nginx以高并发,省内存著称. 相信大多数安装nginx的同学都想知道自己的nginx性能如何. 我想跟大家分享下我使用ab工具的压力测试方法和结果, ab是针对apache的性能测试工具,可以只安 ...

  3. apache的AB测试

    A/B测试A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确信 ...

  4. apache自带ab压测

    ./ab -k -n100000 -c100 http://localhost/index.php -k表示保持连接keep-alive -n表示请求数 -c表示并发数 (总结)Web性能压力测试工具 ...

  5. 压力测试相关之ab命令

    1. 短时压力测试工具 ab 命令(apache的工具) 关键指标: Requests per second:    98.52 [#/sec] (mean)      ###平均每秒的请求数 Tim ...

  6. 【转载】AB测试结果分析

    AB测试,200个请求,20个并发.这样的测试强度,CPU占了70-80%,w3p占用了70多M内存,本想多测几次,看看它的内存会不会涨上去,没 有测试机器没办法,开发机要干活.我估计CPU就有问题了 ...

  7. 使用Apache Server 的ab进行web请求压力测试

    参考:http://www.cnblogs.com/spring3mvc/archive/2010/11/23/2414741.html 自己写代码经常是顺着逻辑写下去,写完后run一下,ok就玩完事 ...

  8. apache ab测试命令详解

    这篇文章主要介绍了apache性能测试工具ab使用详解,需要的朋友可以参考下   网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种 ...

  9. 使用ab进行压力测试详解

    ab是apache自带的压力测试工具,非常好用.转载几篇对ab工具的详细使用的博文.猛击下面的链接地址 http://www.365mini.com/page/apache-benchmark.htm ...

  10. centos ab命令安装

    yum install apr-util -ymkdir abcd abyum -y install yum-utils -yyumdownloader httpd yum localinstall ...

随机推荐

  1. Unity UGUI的Button组件的介绍及使用

    UGUI的Button(按钮)组件的介绍及使用 1. 什么是UGUI的Button组件? UGUI(Unity GUI)是Unity引擎中的一套用户界面系统,Button(按钮)是其中的一个常用组件. ...

  2. [ABC142E] Get Everything

    2023-02-18 题目 题目传送门 翻译 翻译 难度&重要性(1~10):5 题目来源 AtCoder 题目算法 状压dp 解题思路 我们令 \(S\) 表示当前箱子状态,\(P_i\) ...

  3. mpi转以太网连接200PLC转以太网modbusTCP服务器通信配置方法

    兴达易控200PLC转以太网modbusTCP服务器通信配置方法 产品简介 兴达易控PPI-ETH-XD1.0用于西门子S7-200/SMART S7-200PLC的以太网数据采集,非常方便构建生产管 ...

  4. No module named virtualenvwrapper 虚拟环境报错

    No module named virtualenvwrapper 虚拟环境报错 安装虚拟环境命令 sudo pip install virtualenv sudo pip install virtu ...

  5. 有人说SaToken吃相难看,你怎么看。

    前言 今天摸鱼逛知乎,偶然看到了一个回答,8月份的,是关于SaToken的,一时好奇就点了进去. 好家伙,因为一个star的问题,提问的人抱怨了许多,我有些意外,就仔细看了下面的评论,想知道一部分人的 ...

  6. Python面试题——网络与并发编程

    1.python的底层网络交互模块有哪些? socket, urllib,urllib3 , requests, grab, pycurl 2.简述OSI七层协议. OSI七层协议是一个用于计算机或通 ...

  7. Python并发编程——操作系统发展史、多道技术、进程理论、开启进程、join方法、进程间的数据隔离

    文章目录 必备知识回顾 今日内容详细 操作系统发展史 多道技术 必备知识点 多道技术图解 多道技术重点知识 进程理论 必备知识点 进程调度 进程运行的三状态图 两对重要概念 开启进程的两种方式 joi ...

  8. PostgreSQL学习笔记-1.基础知识:创建、删除数据库和表格

    PostgreSQL 创建数据库 PostgreSQL 创建数据库可以用以下三种方式:1.使用 CREATE DATABASE SQL 语句来创建.2.使用 createdb 命令来创建.3.使用 p ...

  9. android studio error

    Invalid method receiver.: Invalid method receiver.java.lang.IllegalStateException: Invalid method re ...

  10. 关于LUN的归属控制器

    ALUA (Asymmetric logic Unit Access)  架构 在ALUA (Asymmetric logic Unit Access)  架构中,LUN有归属控制器,客户在创建LUN ...