狄利克雷卷积性质,和HDU-5628 Clarke and math这题一样。
复杂度.
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
typedef long long ll;
const int N=1e5+5;
ll f[N],g[N],t[N];
int n,k;
ll ksm(ll a,ll b){
ll ans=1;
for(;b>0;b>>=1,a=a*a%mod)if(b&1)ans=ans*a%mod;
return ans;
}
void cal(ll *a,ll *b){
memset(t,0,sizeof t);
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j+=i){
t[j]+=a[i]*b[j/i];
if(t[j]>=mod)t[j]%=mod;
}
}
for(int i=1;i<=n;i++)a[i]=t[i];
}
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)scanf("%d",&g[i]);
f[1]=1;
k=ksm(k,mod-2);
while(k){
if(k&1)cal(f,g);
cal(g,g);
k>>=1;
}
for(int i=1;i<=n;i++)printf("%d%c",f[i]," \n"[i==n]);
}
京公网安备 11010502036488号