可以私信luoguo出題人求正解!!!
附帶壹個60分C++代碼:
#include<cstdio>#include<cmath>
#include<algorithm>
#define?LL?long?long
#define?R?register
using?namespace?std;
long?long?f[1000000];
LL?n,p,t,ans;void?go(LL?x,LL?y){
if(x==1)
{
ans=(ans+1)%998244353;
return;
}
for(R?LL?i=y+1;i<=t&&f[i]<=x;i++)
if(x%f[i]==0)?go(x/f[i],i);
}
int?main()
{
int?T;
scanf("%d",&T);
while(T--)
{
ans=t=0;
scanf("%lld",&n);
p=sqrt(n);
for(R?LL?i=2;i<=p;i++)
if(n%i==0)
{
f[++t]=i;
if(i*i!=n)?f[++t]=n/i;
}
sort(f+1,f+t+1);
go(n,0);
printf("%lld\n",ans);
}
}