1.问题
小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。
并且小Q对于能否被3整除这个性质很感兴趣。
小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
2.思路
手写几组数据之后发现是3循环
1 f
12 t
123 t
1234 f
12345 t
123456 t
可以观察到,[1,r]中每3个数组中只有一个不符合
[1,r]中不符合的数量为(r+2)/3,设为f(x)=(x+2)/3
则在区间[l,r]中不符合则为f(r)-f(l)。
符合数量则为r-l+1+f(r)-f(l)
3.Java代码
import java.util.Scanner;
//在曲面l,r中能被3整除的整数的个数
public class demo1 {
public static void main(String[] args) {
long a,b;
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();
long count = b - a + 1 - (f(b) - f(a - 1));
System.out.println(count);
}
public static long f(long x){
return (x + 2) / 3;
}
}