hdu 5525 Product(数论)
来源:互联网 发布:划船机有效吗 知乎 编辑:程序博客网 时间:2024/06/04 18:11
题目链接:hdu 5525 Product
解题思路
首先要把每个数拆分成质因子考虑,对于质因子p,假设出现的次数为c,那么对于包含
代码
#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5 + 5;const int mod = 1e9 + 7;const ll pmod = 2LL * (mod-1);int cp, pri[maxn], vis[maxn];vector<int> G[maxn];void presolve () { cp = 0; for (int i = 2; i < maxn; i++) { if (vis[i]) continue; pri[++cp] = i; for (int j = i + i; j < maxn; j += i) vis[j] = 1; } for (int i = 1; i < maxn; i++) { int n = i; for (int j = 1; j <= cp && pri[j] <= n; j++) { while (n % pri[j] == 0) { G[i].push_back(j); n /= pri[j]; } } }}int N;ll C[maxn], L[maxn], R[maxn];ll pow_mod(ll x, ll n) { ll ret = 1; while (n) { if (n&1) ret = ret * x % mod; x = x * x % mod; n >>= 1; } return ret;}void solve (int n, int x) { for (int i = 0; i < G[n].size(); i++) { int v = G[n][i]; C[v] = (C[v] + x) % pmod; }}void init () { int x; memset(C, 0, sizeof(C)); for (int i = 1; i <= N; i++) { scanf("%d", &x); solve(i, x); } int p = 1; while (pri[p] < N) p++; N = p; L[0] = R[N+1] = 1; for (int i = 1; i <= N; i++) L[i] = L[i-1] * (C[i] + 1) % pmod; for (int i = N; i; i--) R[i] = R[i+1] * (C[i] + 1) % pmod;}int main () { presolve(); while (scanf("%d", &N) == 1) { init(); ll ans = 1; for (int i = 1; i <= N; i++) { ll k = L[i-1] * R[i+1] % pmod; ll n = C[i] * (C[i] + 1) / 2 % pmod; ans = ans * pow_mod(pri[i], n * k % pmod) % mod; } printf("%lld\n", ans); } return 0;}
0 0
- hdu 5525 Product(数论)
- HDU 5525 Product(数论)
- SPOJ:SUM OF PRODUCT(数论)
- HDU 5525 Product
- HDU 5525 Product
- HDU 5525 Product
- HDU 2204 (数论)
- hdu 1722(数论)
- hdu 1492(数论)
- hdu 2554 (数论)
- hdu 2964 (数论)
- hdu 2421 (数论)
- hdu 2608(数论)
- hdu 2446(数论)
- HDU 1060(数论)
- hdu 5391 (数论)
- hdu 5478 (数论)
- hdu 5812(数论)
- js实现marquee头尾无缝滚动
- ARM汇编伪指令学习笔记
- 《编程之美》——电话号码对应英语单词
- ADT版本查看,This Android SDK requires Andr...ate ADT to the latest问题
- Cocos2d-x多场景切换生命周期
- hdu 5525 Product(数论)
- .9图片的制作
- 苹果账号总结
- JavaScript的IIFE(即时执行方法)
- 百度Android地图SDK地理编码及标注
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- hdu 5527 Too Rich(贪心)
- 标签中的onClick事件
- 对数据库视图view的理解