题目:
小Q得到一个神奇的数列:
1, 12, 123,...12345678910,1234567891011...
。
并且小Q对于能否被3
整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l
个到第r
个(包含端点)有多少个数可以被3
整除。输入描述:
输入包括两个整数
l
和r
, 表示要求解的区间两端。输出描述:
输出一个整数, 表示区间内能被3整除的数字个数。
样例:
in: 2 5 out: 3
判断一个数能否被三整除的方法为各个位数和是否能被3整除,则1.2.3.4....分别对3取模得1.2.0.1.2.0.1.2.0.....
则1,12,123,1234...可分解为1,,1+2=0,0+3=0,0+1,0+1+2=0,0+3=0...
由此可得true,false,false每3个一循环
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int fun(int a){ 5 return a/3*2+(a%3==0?0:a%3==1?0:1); 6 } 7 8 int main(){ 9 int l,r,sum; 10 cin>>l>>r; 11 sum=fun(r)-fun(l-1); 12 cout<<sum<<endl; 13 return 0; 14 }