题目描述
小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整除。
解题思路:
被3整除转换另一个思路是各个位置上的数相加可以被3整除,特别在这个题目上,由于输入是数堆叠,特别合适用循环处理
Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long l = in.nextLong();
long r = in.nextLong();
long result=0;
long tem =0;
for(long i=0;i<l;++i) {
tem +=i;
}
for (long i=l;i<r+1;++i) {
tem +=i;
if (tem%3==0) {
result +=1;
tem =0;
}
}
System.out.println(result);
}
}
Python
import sys
lines = sys.stdin.readlines()
for line in lines:
if not line.strip().split():
continue
l,r = map(int,line.strip().split())
result =0
tem =0
for i in range(1,l):
tem +=i
for i in range(l,r+1):
tem += i
#print('tem',tem)
if tem%3==0:
result +=1
tem = 0
print(result)
break