被3整除的個數 數學題

2021-09-25 14:48:02 字數 1215 閱讀 8322

小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...