小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整除。
法一:超時
l,r=list(map(int,input().strip().split()))
# 法一:超時
res=0
for i in range(l,r+1):
# 數學題 一般找規律解決 發現 序號%3為0或2時可被3整除
if i%3==0 or i%3==2:res+=1
print(res)
法二:
寫出來當插入i以後的規律:
i = 1 ----> 1
i = 2 ----> 0
i = 3 ----> 0
i = 4 ----> 1
i = 5 ----> 0
i = 6 ----> 0
i = 7 ----> 1
發現在區間[1,x]之間共計有 ****(x) = (x+2)/3 個1,剩下的都滿足要求
那麼在區間[l, r]上的 r-l+1個 數字中,必須摳掉 ****(r) - ****(l-1) 個不滿足要求的數字。
直接列印出來就可以了,o(1),不需要迴圈遍歷。
l,r=list(map(int,input().strip().split()))
# 法一:超時
#res=0
#for i in range(l,r+1):
# 數學題 一般找規律解決 發現 下標%3為0或2時可被3整除
# if i%3%2==0:res+=1
#print(res)
# 法二:直接對個數找規律
print(r-l+1-(r+2)//3+(l+1)//3)
程式設計題 被3整除
原題出處 牛客網 網易2019實習生招聘程式設計題集合 轉夢劇場的橙子的解析 小q得到乙個神奇的數列 1,12,123,12345678910,1234567891011 並且小q對於能否被3整除這個性質很感興趣。小q現在希望你能幫他計算一下從數列的第l個到第r個 包含端點 有多少個數可以被3整除。...
1的個數 數學
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 給你兩個數a和b,你的任務是計算出1在a和b之間出現的次數,比如說,如果a 1024,b 1032,那麼a和b之間的數就是 1024 1025 1026 1027 1028 1029 1030 1031 1032 則有10個1出...
E 這是乙個數學題
已知有乙個n 1個數的數列,對於給定的a 0和an 當i滿足當1 i n 1時有 現在小星想知道對於這個數列一段區間的和。第一行輸入四個數 n,a0,an,q接下來q行 每行輸入兩個數l,r 0 n,a 0,an 1e9,q 100000 0 l r n 對於每組查詢輸出al 到ar的和 3 0 3...