因為可以大整數分解為l*10k+(l+1)*10k-1+(l+2)*10k-3+……+r*100,而10k%9=1,所以原整數在模9意義下等於l+(l+1)+(l+2)+(l+3)+……+r=(l+r)*(r-l+1)/2。
因為有除法,所以我們算出2在%9意義下的逆元為5,即可解決問題。
逆元不會求咋辦?當場退役。
不!洛谷大佬告訴我們:
當要除的數非常小的時候,我們可以直接把要取模的數擴大相應的倍數,正常除就行了。最後再對答案取模。即
ans = (l+r)%18*(r-l+1)%18/2%9;
1 #include2using
namespace
std;
3intq;4
long
long
l,r;
5int
main()
11return0;
12 }
洛谷P4942 小凱的數字
題目描述 題目要求從l到r組成的數取模9後的數,其實就是從l到r每次數字模9的和,證明 例如 2345 9 2000 9 300 9 40 9 5 9 9 而2000 9 21000 9 2 91000 9 2 9 任何整十模9都等於1 知道這個規律以後,卻發現列舉一遍會超時,所以可以用等差數列求和...
洛谷P3951 小凱的疑惑 數論
小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在 小凱無法準確支付的商品。兩個正整數 a 和 b,它們之間用乙個空格隔開...
洛谷P3951 小凱的疑惑
小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在 小凱無法準確支付的商品。輸入格式 兩個正整數 aa 和 bb 它們之間...