題解 CQOI2007 餘數求和

2022-05-07 23:06:24 字數 663 閱讀 7406

考慮到這個等式\(a\bmod b = a - b * \lfloor\frac\rfloor\)

所以我們可以得到:

\[\begin

ans &= \sum_^k \bmod i\\

&= \sum_ ^ k - i * \lfloor\frac\rfloor

\end

\]我們可以證得若\(\lfloor\frac\rfloor\)是相同的, 則對應的b所取得的區間必然是連續的

所以維護一下滿足相同的\(\lfloor\frac\rfloor\)的區間的左右端點跳一下就可以了, 注意取值範圍

#include #include #include #include #include #include #define itn int

#define read read

using namespace std;

int n, k;

long long ans = 0;

inline int read()

while(c >= '0' && c <= '9')

return x * w;

}int main()

printf("%lld\n", ans);

return 0;

}

CQOI2007 餘數求和

求 ans k 1 k 2 k n 這題目應該算是數論裡比較簡單的了 求 ni 1 kmod i i 1nkm od i我們知道 a b a b a b 即 ni 1 kmod i n i 1 k i k i n k ni 1 i k i i 1nkm odi i 1 n k i k i n k i...

CQOI2007 餘數求和

題面 這道題用到了數論分塊 首先什麼是數論分塊 顧名思義就是分塊在數論上的應用 不過非常神奇的一點是你如果不會分塊但你還是可以會數論分塊的 所求為 i 1nkm od i sum k mod i i 1 n kmod i將這個式子改為 i 1nk i ki sum k i left lfloor f...

CQOI2007 餘數求和

傳送門 或許這也算是道神仙題?題目描述非常直白,我們把式子轉化一下,其實就是求n k k i i。而k i是可以使用除法分塊來做的 假設t k i,如果t 0,那麼它的末端就是n,這個很顯然,如果不等於0的話,那麼末端就是k t。之後我們就神奇的過了這道題 極短。include include in...