Pagini recente » Cod sursa (job #1378348) | Cod sursa (job #860929) | Cod sursa (job #2042587) | Cod sursa (job #1832203) | Cod sursa (job #1228836)
#include <cstdio>
#define mod 9973
#define limciur 1000000
using namespace std;
int nrp[500000],t,i,nr,x,a,b,solnr,solsum;
long long n,j;
char ciur[1000010];
int ridput(int x,int y)
{
int i,sol=1;
x%=mod;
for(i=1;i<=y;i<<=1)
{
if(i&y) sol=(sol*x)%mod;
x=(x*x)%mod;
}
return sol;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
for(i=2;i<=limciur;i++)
if(!ciur[i])
{
nrp[++nr]=i;
for(j=1LL*i*i;j<=limciur;j+=i) ciur[j]=1;
}
for(scanf("%d",&t);t;t--)
{
scanf("%lld",&n);
solnr=solsum=1;
for(i=1;i<=nr && 1LL*nrp[i]*nrp[i]<=n;i++)
if(n%nrp[i]==0)
{
x=0;
while(n%nrp[i]==0)
{
x++;
n/=nrp[i];
}
solnr*=x+1;
a=(ridput(nrp[i],x+1)-1+mod)%mod;
b=ridput(nrp[i]-1,mod-2)%mod;
solsum=(((solsum*a)%mod)*b)%mod;
}
if(n>1)
{
solnr*=2;
solsum=(solsum*(n+1))%mod;
}
printf("%d %d\n",solnr,solsum);
}
return 0;
}