题解【被3整除】
被3整除
http://www.nowcoder.com/questionTerminal/51dcb4eef6004f6f8f44d927463ad5e8
来看我们的序列,1,12,123,1234,12345......
我们会发现第最终的答案序列模3的余数为,1,0,0,1,0,0......
所以答案就是这个了
#include<cstdio> #include<iostream> using namespace std; int l,r; int main() { scanf("%d%d",%l,%r);--l; int ans1=r/3*2+((r%3)>1); int ans2=l/3*2+((l%3)>1); return printf("%d",ans1-ans2),0; }
不过为什么呢?
众所周知,能被3整除的数所有位数之和是3的倍数
我们每次在序列末尾加上一个数x,实际上是对原序列的数位之和加上x的数位之和
所以答案序列模3的余数就是1,2,0,1,2,0,1,2,0......的前缀和
既是1,0,0,1,0,0,1,0,0.........