题意:
解法:
h ( n ) = ∑ d ∣ n ϕ ( d ) × n d h(n)=\sum_{d|n} \phi(d)\times \frac {n}{d} h(n)=∑d∣nϕ(d)×dn
h ( n ) = ∑ d ∣ n ϕ ( d ) × I d ( n d ) h(n)=\sum_{d|n} \phi(d)\times Id(\frac {n}{d}) h(n)=∑d∣nϕ(d)×Id(dn)
显 然 是 迪 利 克 雷 卷 积 形 式 , 即 h = ϕ ∗ I d 显然是迪利克雷卷积形式,即h=\phi*Id 显然是迪利克雷卷积形式,即h=ϕ∗Id
ϕ ( x ) 和 I d ( x ) 都 是 积 性 函 数 , 因 此 h ( x ) 也 是 积 性 函 数 \phi(x)和 Id(x)都是积性函数,因此h(x)也是积性函数 ϕ(x)和Id(x)都是积性函数,因此h(x)也是积性函数
所 以 有 h ( n ) = ∏ i = 1 m h ( p i q i ) 所以有h(n)=\prod_{i=1}^mh(p_{i}^{q_{i}}) 所以有h(n)=∏i=1mh(piqi)
h ( p q ) = ∑ d ∣ p q ϕ ( d ) × p q d h(p^{q})=\sum_{d|p^{q}}\phi(d)\times\frac{p^{q}}{d} h(pq)=∑d∣pqϕ(d)×dpq
= ∑ k = 0 q ϕ ( p k ) × p q − k =\sum_{k=0}^{q}\phi(p^{k})\times p^{q-k} =∑k=0qϕ(pk)×pq−k
由 于 ϕ ( p q ) = p q − 1 × ( p − 1 ) , 其 中 q > = 1 由于\phi(p^q)=p^{q-1}\times (p-1),其中q>=1 由于ϕ(pq)=pq−1×(p−1),其中q>=1
h ( p q ) = p q + ∑ k = 1 q p k − 1 × ( p − 1 ) × p q − k h(p^{q})=p^{q}+\sum_{k=1}^{q} p^{k-1}\times(p-1) \times p^{q-k} h(pq)=pq+∑k=1qpk−1×(p−1)×pq−k
= p q + ∑ k = 1 q ( p − 1 ) × p q − 1 =p^q +\sum_{k=1}^q (p-1)\times p^{q-1} =pq+∑k=1q(p−1)×pq−1
= p q + q × ( p − 1 ) × p q − 1 =p^q+q\times (p-1) \times p^{q-1} =pq+q×(p−1)×pq−1
h ( n ) = ∏ i = 1 m h ( p i q i ) h(n)=\prod_{i=1}^mh(p_{i}^{q_{i}}) h(n)=∏i=1mh(piqi)
= ∏ i = 1 m ( p i q i + q i × ( p i − 1 ) × p i q i − 1 ) =\prod_{i=1}^m (p_{i}^{q_{i}}+q_{i}\times (p_{i}-1) \times p_{i}^{q_{i}-1}) =∏i=1m(piqi+qi×(pi−1)×piqi−1)
code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxm=2e6+5;
const int mod=998244353;
int ppow(int a,int b,int mod){
int ans=1%mod;a%=mod;
for(;b;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;
return ans;
}
void solve(){
int m;cin>>m;
int ans=1;
for(int i=1;i<=m;i++){
int p,q;cin>>p>>q;
int temp=(ppow(p,q,mod)+q*(p-1)%mod*ppow(p,q-1,mod)%mod)%mod;
ans=ans*temp%mod;
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);
int T;cin>>T;
while(T--){
solve();
}
return 0;
}