洛谷P1630 求和

2022-08-03 02:00:15 字數 989 閱讀 3738

【luogup1630】求和

給定$a,b$,求$(\sum\limits_^)\mod 10000$

多組詢問,$a,b\le 1e9$

字首和+快速冪

如果暴力計算答案,那麼時間複雜度為$o(tab)$

使用快速冪優化,那麼時間複雜度為$o(ta\log b)$

考慮這樣乙個式子:$$i^b\mod n=(i\mod n)^b$$

那麼我們就可以預處理出$i^b,i\in[0,9999]$的值,那麼時間複雜度變成了$o(ta)$

考慮每個$i^b\mod 10000$的值,發現整個序列就是$i^b,i\in[0,9999]$重複了$\lfloor\frac\rfloor$次,再加上最後剩下的$i^b,i\in[0,9999]$的前$a\mod 10000$個數

那麼我們就可以處理出$i^b\mod 10000$的字首和,然後在預處理完成之後$o(1)$即可完成

這樣時間複雜度就變成了$o(t\times 10000\times \log b)$

#include //

check if it is judged online

namespace

shl

while

(isdigit(c))

return ret *op;

}intt;

inta, b;

ll c[

10010], sum[10010

];

const

int mod =1e4;

ll qpow(ll x, ll y)

return

ret;

}intmain()

printf(

"%lld\n

", ((sum[mod - 1] * (a / mod) % mod) + sum[a % mod]) %mod);

}return0;

}}int

main()

題解 P1630 求和

題目 發現題解都不夠優雅,就自己來一篇 首先,看清楚了,題目是 sum ai b 的餘數 而不是 sum ab i 等比數列求和了解一下 畢竟.本蒟蒻一開始就看錯了.好,進入正題,介於 a,b leq 10 9 暴力就想都不用想了,肯定過不了每一次乘法需要 o b 的時間,加法需要 o a 的時間,...

洛谷 P2671 求和

想要oi學得好,數學肯定不能少 看來我是永遠也學不好了 此篇博文較長 廢話較多 您可以選擇 寫在最前面 其實不需要用 long long 型別,只需在兩數相乘時先取模一次就行了 為什麼可行,請參見取模的百科 又是該死的數學知識 在下面的 中,既有用 long long 的,又有用 int 的,也是因...

洛谷P2671 求和 數論

題目傳送門 格式難調,題面就不放了。分析 zyys 的一道題。很顯然是大力推公式。我們分析一下題目,實際上限制條件就是 下標同奇偶且顏色相同的數,那麼我們先拿這個公式 x z num x num z 套三個變數 x,y,z 推一下 x z num x num z num x x num z z nu...