版权声明:时间是有限的,知识是无限的,那就需要在有限的时间里最大化的获取知识。 https://blog.csdn.net/Fire_to_cheat_/article/details/83241502
【积性函数+欧拉函数+狄利克雷卷积】2017CCPC杭州站B——HDU-6265 Master of Phi
http://acm.hdu.edu.cn/showproblem.php?pid=6265
题意:
一次输入一个正数分解质因数的各项底数与指数,求算:
知识补充:
狄利克雷
三连:
(1)狄利克雷卷积:
(2)两个积性函数的狄利克雷卷积仍是积性函数
(3)欧拉函数和 都是积性函数
那么就可以看出积性函数:
根据积性函数
的特性,
,下面要解决的就是如何求
由题给公式可以得到:(p是质数(n的质因子)),d的所有取值可能有{
}
根据欧拉函数:
维基百科证明
进一步化解:
所以推倒得到公式:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MOD=998244353;
ll powmod(ll a,ll n,ll mod)
{
ll ret=1;
a%=mod;
while(n)
{
if(n&1)ret=ret*a%mod;
a=a*a%mod;
n>>=1;
}
return ret;
}
int main()
{
int t;
cin>>t;
while(t--)
{
ll m;
cin>>m;
ll sum=1;
//
while(m--)
{
ll p,q;
cin>>p>>q;
ll tmp=0;
tmp=(tmp+powmod(p,q,MOD))%MOD;
tmp=(tmp+powmod(p,q-1,MOD)*(p-1)%MOD*q%MOD)%MOD;
sum=(sum*tmp)%MOD;
}
cout<<sum<<endl;
}
return 0;
}