1 问题
(此题来自牛客网)
小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
2 样例
输入 2 5
输出 3
说明:1 12 123 1234 12345中第2个到第5个为12 123 1234 12345,其中12 123 12345能被3整除。
3 求解
进行找规律:
项数,能否被整除
1 0 (1不能被整除)
2 1 (12可以被整除)
3 1 (123可以被整除)
4 0 (不能)
5 1 (12345可以)
6 1 (123456可以)
7 0 (1234567不可以)
8 1(12345678可以)
9 1 (123456789可以)
10 0 (12345678910不可以)
11 1 (1234567891011可以)
12 1 (123456789101112可以)
所以一直保持 0 1 1的循环。
#include <iostream>
using namespace std;
void test() {
int l, r;
// // while (cin >> a >> b)
while(scanf("%d %d",&l,&r)!=EOF){
l = l - 1;
int cl, cr;
int yl, yr; //余数
yl = l % 3;
if (yl == 2)
cl = l / 3 * 2 + 1;
else
cl = l / 3 * 2;
yr = r % 3;
if (yr == 2)
cr = r / 3 * 2 + 1;
else
cr = r / 3 * 2;
printf("%d", cr - cl);
}
}
int main() {
test();
return 0;
}