题目描述
小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整除
能被整除的数的特征:https://blog.youkuaiyun.com/c_circle/article/details/78492772
能被3整除的数,各个数位上的数字和能被3整除,那么这个数能被3整除
推广:不是一个数字一个数字地拆分,把某个数视为字符串划分为多个任意长度的数字字符串,比如a=137928672拆成b=137,c=9286,d=72,那么有a%3=(b+c+d)%3
题中数组A第i个数A[i]是从1写到i的数,根据推广的结论把它拆成1,2,3,4,5,…,i,则有:
A[i]%3=(1+2+3+…+i)%3
而自然数序列1,2,3,4,5…i取模3的结果分别是1,2,0,1,2,0,…,i%3,也就是:
A[i]%3=(1+2+0+1+2+0+…+i%3)%3
因为1+2=3刚好能被3整除,当i%3=0时,右边括号内是1,2,0的重复序列,当然能被3整除,当i%3=2时,右边括号内是1,2,0重复序列最后跟上1,2,末尾没有0但还是能被3整除,当i%3=1时,显然A[i]%3=1
综上