TopCoder SRM 660 Div2 Problem 1000 - Powerit (数论)
2015-06-21 12:08
549 查看
题意
求∑ni=1i2k−1modm思路
求abmodc还有这么一个公式.ab≡(amodc)bmodϕ(c)+ϕ(c)(modc),b>=ϕ(c)
因为m最大是1e9,那么k在30以内的我们都可以暴力得出结果,k>30就一定满足这个公式的条件,套上去算就行。
代码
class Powerit { public: int get_phi(int m) { int k = sqrt(m+.5), ans = m; for (int i = 2; i <= k; i++) if (m % i == 0) { ans = ans / i * (i-1); while (m % i == 0) m /= i; } if (m > 1) ans = ans / m * (m-1); return ans; } LL pow_mod(LL a, LL m, LL n) { LL ret = 1; while (m) { if (m & 1) ret = ret * a % n; a = a * a % n; m >>= 1; } return ret; } int calc(int n, int k, int m) { LL ans = 0; if (k <= 30) { for (int i = 1; i <= n; i++) ans = (ans + pow_mod(i, (1<<k)-1, m)) % m; return ans; } else { int phi_m = get_phi(m); for (int i = 1; i <= n; i++) ans = (ans + pow_mod(i%m, (pow_mod(2, k, phi_m)-1 + phi_m) % phi_m + phi_m, m)) % m; return ans; } } };
相关文章推荐
- hdu 4738 Caocao's Bridges 2013 ACM-ICPC杭州赛区网络赛 1001 双连通分量
- hdu 4750 2013 ACM/ICPC Asia Regional Nanjing Online 1003 并查集+离线操作
- hust 1626 Cutting rope
- 我的ACM-ICPC资源整理
- 2014 ACM-ICPC 亚洲地区赛 西安站小结
- hdu5007 ACM-ICPC 西安赛区网赛A题 水题
- Light 1003 - Drunk (拓扑排序)
- TopCoder SRM 659 Div2 Problem 500 - PublicTransit (思维)
- UVa 1529 - Clock (模拟)
- Codeforces 551C - GukiZ hates Boxes (二分 + 贪心)
- ZOJ 3736 Pocket Cube
- 一位ACMer过来人的心得
- poj1067
- 一位Acmer过来人的经验
- 2014 ACM-ICPC World Final Info board
- ZOJ 3826 Hierarchical Notation(Mudanjiang 2014)(JSON解析模拟)
- HDU 5073 Galaxy(Anshan 2014)(数学推导,贪心)
- HDU 5093 Battle ships(二部图最大匹配)
- HDU 5094 Maze(BFS、状态压缩)
- HDU 5092 Seam Carving(DP, 路径)