题目:
小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 }
原文链接: https://www.cnblogs.com/Kiven5197/p/8716537.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/271765
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!