從 1 到 1024 排成一個數除以 9,餘數是多少?
01-16
因為
所以 因為 連續9個整數和必然被9整除又所以
證明 連續9個整數和必然被9整除因為 任意連續9個整數的和,必然和這列數差9的倍數除了 @成成小 所講的,還可以更簡單些(a…ab…b) % 9 = (a…a + b…b)%9即"從1到1024排成一個數除以9餘數"等於「從1加到1024的累積和除以9的餘數」即[ (1+1024)*1024/2]%9用計算器算出(1+1024)*1024/2為524800
524800%9 == (5+2+4+8+0+0)%9 == (2+8)%9 == 1%9 == 1
&>&>&> sum(map(sum, map(lambda x: map(int, x), map(list, map(str, range(1, 1024 + 1)))))) % 9
1
那個鏈接到百度知道的回答其實還是有點麻煩,不需要統計各個數碼出現次數的。
既然一個數除以9的餘數跟它個數碼之和除以9的餘數相等(這是除以9餘數的性質),那麼就可以進行這樣的運算:(箭頭表示除以9餘數相同)123456789101112131415……1024-&>1+2+3+4+5+6+7+8+9+1+0+1+1+1+2+1+3+1+4+1+5+……+1+0+2+4-&>1+2+3+4+5+6+7+8+9+(1+0)+(1+1)+(1+2)+(1+3)+(1+4)+(1+5)+……+(1+0+2+4)--------(*)-&>1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+……+1024-&>-&>512x1025
-&>8x8-&>64-&>1也就是說這個數除以9的餘數為1。其中(*)那一步和它之後的那一步跟鏈接到百度知道的答案不同,這樣不需要統計各數碼出現次數,算是大大簡化了一下過程~這些小事,交給 Python 去算就好了。
答案是 1#coding:utf-8
num = ""
for i in range(1,1025):
num += str(i)
print int(num)%9
首先,你要知道這個 一個數除以9的餘數跟它個個數之和除以9的餘數相等。所以1024除以9等於7除以9的餘數等於7,把1024包括在內的最後七個數寫出來1018.1019.1020.1021.1022.1023.1024.這些數的數字相加,結果是4646除以9餘……1……這就是結果
這。。之前有人問 為什麼所有位加起來除以3的餘數 等於這個數除以3的餘數你難道沒看么
1+2+3+4+…+1024
=(1024×1025)/2 /*等差數列求和*/= 512×1025∴ (1+2+3+4+…+1024)/9
=(512×1025)/9 =(512/3)×(1025/3)512MOD3 = 2
1025MOD3 =2∴Answer is (2×2)MOD3=1把1至2010這2010個自然數依次寫下來得到一個多位數123456789.....2010,這個多位數除以9餘數是多少?_百度知道
推薦閱讀:
※求解方程時,除了用牛頓法,可否使用梯度下降法?
※如何證明一個數的數根(digital root)就是它對9的餘數?
※程序員工作後看演算法書有用嗎?效果怎樣?
※一道阿里前端筆試題,求思路?
※什麼樣的題目解出來可以是這樣的二維碼?
TAG:演算法 |