网易校招题之小Q数列
题目描述
小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整除。
思路
输入1 不能整除(余1) 输入4 不能整除(余1)
输入2 可以整除(余2) 输入5 可以整除(余2)
输入3 可以整除(余0) 输入6 可以整除(余0)
..............
依次循环 不能 能 不能 能.。。。
因此只需要判断输入数字之间有多少能余2或者0即可
#include <iostream>
using namespace std;
int main()
{
long long sum = 0;
long long l, r;
long long temp;
while (cin >> l >> r)
{
if (l > r)
{
temp = l;
l = r;
r = l;
}
for (long long i = l; i <= r; i++)
{
if ((i % 3) == 1)
{
continue;//如果余1 则直接快进
}
else
{
sum++;
}
}
cout << sum << endl;
}
return 0;
} 