题目链接:https://vjudge.net/contest/268674#problem/B
题意:
依次输入一个整数分解质因数的各项底数与指数,求算: ∑d|nφ(d)×n/d
思路:迪利克雷卷积知识和欧拉函数的知识
可以看出它是个积性函数
推导如下图:
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+100;
const int mod=998244353;
ll a[maxn],b[maxn],c[maxn];
ll qk(ll a,ll b)
{
ll res=1;
a=a%mod;
while(b)
{
if(b&1)
{
res=res*a%mod;
}
b/=2;
a=a*a%mod;
}
return res;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int m;
ll sum=1;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
ll p,q;
ll ans=1;
scanf("%lld %lld",&p,&q);
ans=(ans*q*(p-1))%mod;
ans=ans*(qk(p,q-1)%mod)%mod;
ans=ans+(qk(p,q)%mod)%mod;
sum=sum*ans%mod;
}
cout<<sum<<endl;
}
}