Pagini recente » Cod sursa (job #54213) | Cod sursa (job #1476371) | Cod sursa (job #663699) | Cod sursa (job #2837691) | Cod sursa (job #2376907)
#include <bits/stdc++.h>
using namespace std;
int t,i,j,x[1000010],MOD=9973,e,p,s,nr,k,in,inv,ss;
long long n,cn;
bool pr[1000010];
int putere(int x,int p)
{
int 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||1LL*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);
ss=(p*inv)%MOD;
s=(s*ss)%MOD;
s%=MOD;
}
nr*=(e+1);
}
if(n!=1)
{
n%=MOD;
nr*=2;
inv=putere(n-1,MOD-2);
p=(putere(n,2)-1);
ss=(p*inv)%MOD;
s=(s*ss)%MOD;
s%=MOD;
}
cout<<nr<<" "<<s<<'\n';
}
return 0;
}