# Product

Accepts: 21

Submissions: 171
Time Limit: 6000/3000 MS (Java/Others)

Memory Limit: 131072/131072 K (Java/Others)

给n个数{A}_{1},{A}_{2}....{A}_{n}，表示N=\prod_{i=1}^{n}{i}^{{A}_{i}}。求N所有约数之积。

输入有多组数据.

对于每组数据输出一行为答案对{10}^{9}+7取模的值.

4
0 1 1 0
5
1 2 3 4 5

36
473272463

#pragma warning(disable:4996)
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
using namespace std;

typedef long long ll;

ll N;
const int maxn = 100010;
const ll mod = 1e9 + 7;
const ll mod2 = 2 * (mod - 1);
ll index[maxn], L[maxn], R[maxn];
int num, pri[maxn], vis[maxn];
vector<int>have[maxn];

void init()
{
num = 0;
int i, j, n;
for (i = 2; i < maxn; i++)
{
if (vis[i])
continue;
pri[++num] = i;
for (j = i + i; j < maxn; j = j + i)
{
vis[j] = 1;
}
}
for (i = 1; i < maxn; i++)
{
n = i;
for (j = 1; j <= num&&pri[j] <= n; j++)
{
while (n%pri[j] == 0)
{
have[i].push_back(j);//记录所含有的质数，用质数的下标记录
n /= pri[j];
}
}
}
}

ll getresult(ll A, ll n, ll k)
{
ll b = 1;
while (n > 0)
{
if (n & 1)
{
b = (b*A) % k;
}
n = n >> 1;
A = (A*A) % k;
}
return b;
}

void solve(int cishu, int n)
{
int temp;
int si = have[cishu].size();
for (int i = 0; i < si; i++)
{
temp = have[cishu][i];
index[temp] = (index[temp] + n) % mod2;
}
}

int main()
{
//freopen("i.txt", "r", stdin);
//freopen("o.txt", "w", stdout);

int x;
ll k, n, ans;
init();
while (scanf("%d", &N) == 1)
{
memset(index, 0, sizeof(index));
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] * (index[i] + 1) % mod2;
for (int i = N; i >= 1; i--)
R[i] = R[i + 1] * (index[i] + 1) % mod2;
ans = 1;
for (int i = 1; i <= N; i++)
{
k = L[i - 1] * R[i + 1] % mod2;
n = index[i] * (index[i] + 1) / 2 % mod2;
ans = ans*getresult(pri[i], n*k%mod2,mod) % mod;
}
printf("%lld\n", ans);
}
//system("pause");
return 0;
}

• 本文已收录于以下专栏：

## Hdu 3221 Brute-force Algorithm (矩阵 欧拉定理降幂)

• whyorwhnt
• 2013年10月18日 22:14
• 1300

## HDU 5895 Mathematician QSC(矩阵快速幂+扩展欧拉定理)

• Miracle_ma
• 2016年09月21日 16:32
• 180

## 欧拉phi函数与欧拉定理

• u012936765
• 2014年08月23日 10:52
• 579

## 扩展欧拉定理

• ez_yww
• 2017年07月27日 11:03
• 1722

## hdu3221 扩展欧拉定理（降幂大法）

• mosquito_zm
• 2017年08月16日 16:58
• 210

## Different Circle Permutation HDU - 5868(burnside引理+递推+矩阵快速幂+欧拉函数)

You may not know this but it’s a fact that Xinghai Square is Asia’s largest city square. It is locat...
• Coldfresh
• 2017年09月07日 13:58
• 129

## 数论的欧拉定理证明 &amp; 欧拉函数公式

• hillgong
• 2009年05月25日 14:56
• 17548

## HDU 1395(欧拉定理)

• u013220054
• 2014年01月17日 23:42
• 972

## hdu 5525 Product（数论）

• u011328934
• 2015年11月02日 10:23
• 463

## 欧拉定理，费马小定理证明

• Cold_Chair
• 2016年08月17日 22:14
• 3314

举报原因： 您举报文章：HDU 5525：Product 欧拉定理 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)