BZOJ 1408: [Noi2002]Robot
2017-02-20 08:38
323 查看
1408: [Noi2002]Robot
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 545 Solved: 364
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
32 1
3 2
5 1
Sample Output
86
75
HINT
90号机器人有10个老师,加上它自己共11个。其中政客只有15号;军人有3号和5号;学者有8个,它们的编号分别是:2,6,9,10,18,30,45,90。Source
[Submit][Status][Discuss]吓呆我,这是NOI水平?2002年的啊……
发现x的独立数就是phi(x),而x的老师就是x的约数。
因为$\sum_{d|n}{\phi(d)}=n$,所以只需要求出前两个答案就可以得到最后一个。
前两个只和$p_{i}$有关,和其指数$e_{i}$无关,且任意两个p都是互质的,有$\phi(p_{i})*\phi(p_{j})=\phi(p_{i}*p_{j})$。
所以前缀和维护之前的奇数和偶数个p组成的phi的和即可。
#include <cstdio> const int mxn = 1005; const int mod = 10000; template <class T> __inline void read(T &x) { x = 0; char c = getchar(); while (c < 48)c = getchar(); while (c > 47)x = x*10 + c - 48, c = getchar(); } inline int pow(int a, int b) { int r = 1; for (; b; b >>= 1, a = a * a % mod) if (b & 1)r = r * a % mod; return r; } int n; int m = 1; int p[mxn]; int e[mxn]; int ans[2]; int sum[2]; signed main(void) { read(n); for (int i = 1; i <= n; ++i) read(p[i]), read(e[i]); for (int i = 1; i <= n; ++i) m = m * pow(p[i], e[i]) % mod; sum[0] = 1, sum[1] = 0; for (int i = 1; i <= n; ++i)if (p[i] & 1) { --p[i]; int s0 = sum[0]; int s1 = sum[1]; (ans[0] += p[i] * s1) %= mod; (ans[1] += p[i] * s0) %= mod; (sum[0] += s1 * p[i]) %= mod; (sum[1] += s0 * p[i]) %= mod; } printf("%d\n%d\n%d\n", ans[0], ans[1], ((m - ans[0] - ans[1] - 1) % mod + mod) % mod); }
@Author: YouSiki
相关文章推荐
- [BZOJ1408][Noi2002]Robot(数论+dp)
- 【BZOJ 1408】【NOI 2002】Robot
- bzoj 1408: [Noi2002]Robot(数论+DP)
- BZOJ 1408 NOI2002 Robot 数论
- 【bzoj1408】 Noi2002—Robot
- bzoj1408: [Noi2002]Robot
- BZOJ_1408_[Noi2002]Robot_数学
- bzoj 1408 [Noi2002]Robot(欧拉函数)
- bzoj 1408: [Noi2002]Robot (DP+欧拉函数)
- BZOJ 1408: [Noi2002]Robot
- 【BZOJ1408】[Noi2002]Robot DP+数学
- 1408: [Noi2002]Robot|快速幂|欧拉函数
- 【bzoj1408】[Noi2002]Robot 数论+dp
- 1408: [Noi2002]Robot 欧拉函数+快速幂
- [BZOJ1407][NOI2002]Savage(扩展欧几里德)
- bzoj [Noi2002]Savage 扩展欧几里得
- bzoj 1407: [Noi2002]Savage【扩展欧几里得+中国剩余定理】
- bzoj [Noi2002]Savage 扩展欧几里得
- bzoj1407【NOI2002】Savage
- 【BZOJ】1407 NOI 2002 荒岛野人Savage