题目描述
小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
输入描述:
输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。
输出描述:
输出一个整数, 表示区间内能被3整除的数字个数。
示例1
输入
复制
2 5
输出
复制
3
说明
12, 123, 1234, 12345... 其中12, 123, 12345能被3整除。
这道题自然不可以用直接%3的方式,那肯定存不下
将该数的各位上的数加起来,看能不能被3整除,即便用这种方法,因为案例数字很大,用int类型仍然无法完全通过,需要将变量定义为long long类型。
代码:
#include<stdio.h>
int main()
{
long long l,r;
long long sum=0,i,t,j;
scanf("%lld%lld",&l,&r);
for(i=l;i<=r;i++)
{
t=0;
for(j=1;j<=i;j++)
{
t+=j;
}
if(t%3==0)
{
sum+=1;
}
}
printf("%lld\n",sum);
}