利用十進位制數的這個特性檢驗幾個數相加、相減、相乘的結果對不對,這種檢查方法叫:棄九法。
例如,用棄九法檢驗乘式5483×9117=49888511是否正確?
因為 5483≡5+4+8+3≡11≡2(mod 9),
9117≡9+1+1+7≡0(mod 9),
所以 5483×9117≡2×0≡0(mod 9).
但是 49888511≡4+9+8+8+8+5+1+1≡8(mod 9),所以5483×9117≠49888511,即乘積不正確。
[b]要注意的是棄九法只能知道原題錯誤或有可能正確,但不能保證一定正確。[/b]
棄九法原理:
[b](1)[/b]先證明十進位制數的乙個特有的性質:任何乙個整數模9同余於它的各數字上數字之和。
設自然數n=a[n]a[n-1]…a[0],其中a[0],a[1]、…、a[n]分別是個位、十位、…上的數字,再設m=a[0]+a[1]+…+a[n],求證:n≡m(mod 9).
證明:∵ n=a[n]a[n-1]…a[0]=a[n]*10^n+a[n-1]*10^(n-1)+…+a[1]*10+a[0].
又∵ 1≡1(mod 9),
10≡1(mod 9),
102≡1(mod 9),
…10n≡1(mod 9).
上面這些同余式兩邊分別同乘以a[0]、a[1]、a[2]、…、a[n],再相加得:
a[0]+a[1]*10+…+a[n]*10^n≡(a[0]+a[1]+…+a[n])(mod 9),
即 n≡m(mod 9),以上性質得證。
有了以上性質,以後我們求乙個整數被9除的餘數,只要先計算這個整數各數字上數字之和,再求這個和被9除的餘數即可。例如,求1827496被9除的餘數,只要先求(1+8+2+7+4+9+6),再求和被9除的餘數。
[b](2)[/b]設a=a[i]a[i-1]…a[0],b=a[j]a[j-1]…a[0],c=c[k]c[k-1]…c[0],
1.若a+b=c,則
a+b=c =〉a+b≡c mod 9
由性質 n≡m(mod 9)
=〉 (a[0]+a[1]+…+a[i])+( b[0]+b[1]+…+b[j])≡(c[0]+c[1]+…+c[k]) mod 9
2.若a*b=c,則
a*b=c => a*b ≡c mod 9
由性質 n≡m(mod 9)
=>(a[0]+a[1]+…+a[i])*( b[0]+b[1]+…+b[j])≡(c[0]+c[1]+…+c[k])mod 9
加法,除法的棄九法原理依此類推。
LeetCode258 各位相加(棄九法)
原題目給定乙個非負整數 num,反覆將各個位上的數字相加,直到結果為一位數。示例 輸入 38 輸出 2 解釋 各位相加的過程為 3 8 11,1 1 2。由於 2 是一位數,所以返回 2。高階 你可以不使用迴圈或者遞迴,且在 o 1 時間複雜度內解決這個問題嗎?題目大意 無題目分析 棄九法 九餘數法...
自我激勵九法
1調高目標 真正能激勵你奮發向上的,是確立乙個既巨集偉又具體的遠大目標。許多人驚奇發現,他們之所以達不到自己孜孜以求的目標,是因為他們的主要目標太小,而且太模糊,使自己失去動力。如果你的主要目標不能激發你的想象力,目標的實現就會遙遙無期。2離開舒適區 不斷尋求挑戰。成功者不是天生就能成功的,只是從不...
自我激勵九法
自我激勵九法 1 調高目標 真正能激勵你奮發向上的是 確立乙個既巨集偉又具體的遠大目標。許多人驚奇發現,他們之所以達不到自己孜孜以求的目標,是因為他們的主要目標太小,而且太模糊,使自己失去主動力。如果你的主要目標不能激發你的想象力,目標的實現就會遙遙無期。2 離開舒適區 不斷尋求挑戰,體內就會發生奇...