一天蒜头君在想,[l,r][之间有多少个数字是 d 的倍数呢?
但是区间 [l,r]是 d 的倍数的数字太多,于是聪明的蒜头君便找到了你。
当 l = 1032,r = 12302135942453,d = 234,d的倍数有多少个呢?
思路:如何我们一次加1一个一个的去找234的倍数显然是不可能的因为它的范围太大了,然后我们就去想我们只要找到区间内第一个是234的倍数的数,然后在它的基础上依次加234的倍数那它肯定还是234的倍数所以我们只要求出第一个234的倍数与r之间还包含多少个234就可以了答案就是个数+1。
代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll sum=1032,r=12302135942453;
while(1)
{
if(sum%234==0) break;
sum++;
}
ll s=(r-sum)/234;
printf("%lld\n",s+1);
}