Pagini recente » Cod sursa (job #2510734) | Cod sursa (job #734877) | Cod sursa (job #2303960) | Cod sursa (job #1825776) | Cod sursa (job #2376895)
#include <bits/stdc++.h>
using namespace std;
long long t,i,n,j,x[1000010],MOD=9973,e,p,s,nr,k,cn,in,inv;
bool pr[1000010];
long long putere(long long x,long long p)
{
long long sol=1,N=x;
while(p)
{
if(p&1)sol=(sol*N)%MOD;
N=(N*N)%MOD;
p/=2;
}
return sol;
}
int main()
{
ifstream cin ("ssnd.in");
ofstream cout ("ssnd.out");
cin>>t;
for(i=2; i<=1000000; ++i)
if(!pr[i])
{
x[++k]=i;
j=i*2;
while(j<=1000000)
{
pr[j]=true;
j+=i;
}
}
while(t--)
{
cin>>n;
cn=n;
nr=1;
s=1;
for(i=1; i<=k; ++i)
{
in=i;
if(n==1||x[i]*x[i]>cn)break;
e=0;
p=1;
while(n%x[i]==0)n/=x[i],++e;
if(e!=0)
{
p=(putere(x[i],e+1)-1)%MOD;
inv=putere(x[i]-1,MOD-2);
s*=p*inv;
s%=MOD;
}
nr*=(e+1);
}
if(n!=1)
{
nr*=2;
inv=putere(n-1,MOD-2);
p=(putere(n,2)-1);
s*=p*inv;
s%=MOD;
}
cout<<nr<<" "<<s<<'\n';
}
return 0;
}