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