小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。
输出一个整数, 表示区间内能被3整除的数字个数。
2 5
3
12, 123, 1234, 12345...
其中12, 123, 12345能被3整除。
#include <stdio.h> int main() { int l, r, i, j; while(scanf("%d %d", &l, &r) != EOF) { //先计算第r个之前有多少个数可以被三整除。 i = (r / 3) * 2; //当余数为2时,第r个数同样可以被3整除,但未被计算在内。 if(r % 3 == 2) { i++; } //再计算第l个数前有几个数可以被三整除。 j = (l / 3) * 2; //当l可以被三整除时,第l个数可以被三整除,但被算在了l之前。 if(l % 3 == 0) { j--; } printf("%d\n", i - j); } return 0; }