BZOJ2154 Crash的数字表格
2015-02-14 21:25
148 查看
昨天看了iwtwiioi的推导感觉很神!
今天想写结果又忘了怎么推的啦。。。233
View Code
今天想写结果又忘了怎么推的啦。。。233
/************************************************************** Problem: 2154 User: rausen Language: C++ Result: Accepted Time:5124 ms Memory:127760 kb ****************************************************************/ #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; const int N = 1e7 + 5; const ll mod = 20101009; int n, m; int p , cnt; bool vis ; ll g ; void get_g(int N) { int i, j, k; g[1] = 1; for (i = 2; i <= N; ++i) { if (!vis[i]) p[++cnt] = i, g[i] = 1 - i; for (j = 1; j <= cnt; ++j) { if ((k = i * p[j]) > N) break; vis[k] = 1; if (i % p[j] == 0) { g[k] = g[i]; break; } g[k] = g[i] * (1 - p[j]); } } for (i = 2; i <= N; ++i) g[i] *= i; for (i = 1; i <= N; ++i) (g[i] += g[i - 1]) %= mod; } ll calc(int n, int m) { int i, j; ll t1, t2, res = 0; for (i = 1, j = 0; i <= n; i = j + 1) { j = min(n / (n / i), m / (m / i)); t1 = (1ll * (n / i) * (n / i + 1) / 2) % mod; t2 = (1ll * (m / i) * (m / i + 1) / 2) % mod; (res += ((g[j] - g[i - 1]) * ((t1 * t2) % mod)) % mod) %= mod; } return (res % mod + mod) % mod; } int main() { int i, T; scanf("%d%d", &n, &m); if (n > m) swap(n, m); get_g(m); printf("%lld\n", calc(n, m)); return 0; }
View Code
相关文章推荐
- bzoj2154: Crash的数字表格
- bzoj2154 Crash的数字表格
- bzoj2154: Crash的数字表格
- bzoj2154: Crash的数字表格
- BZOJ2154: Crash的数字表格
- Bzoj2154: Crash的数字表格
- Bzoj2154: Crash的数字表格
- bzoj2154 Crash的数字表格(莫比乌斯反演)
- bzoj2154 Crash的数字表格
- BZOJ2154: Crash的数字表格
- bzoj2154: Crash的数字表格
- 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab
- bzoj2154 Crash的数字表格
- bzoj2154 Crash的数字表格
- bzoj2154 Crash的数字表格(反演)
- BZOJ2154 Crash的数字表格
- [BZOJ2154]Crash的数字表格
- 「BZOJ」2154 Crash的数字表格-莫比乌斯反演
- [bzoj2154][积性函数]Crash的数字表格
- 【BZOJ 2154】Crash的数字表格