Pagini recente » Cod sursa (job #25440) | Cod sursa (job #1541040) | Cod sursa (job #1645831) | Cod sursa (job #3037302) | Cod sursa (job #1248633)
#include <fstream>
#include <iostream>
#include <cmath>
#define MOD 9973
#define NCIUR 1000000
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long n,T,ciur[2000005],prim[1000000],countP;
void goCiur()
{
long long i,j;
for(i=2;i<=NCIUR;i++)
if(!ciur[i])
{
prim[++countP]=i;
for(j=2*i;j<=NCIUR;j=j+i)
ciur[j]=1;
}
}
int exp ( int x , int y )
{
long long rez=1;
while(y)
{
if(y%2==0)
x=(x*x)%MOD;
else
{
rez=(rez*x)%MOD;
x=(x*x)%MOD;
}
y/=2;
}
return rez;
}
int main()
{
long long i, nr, s, d, rad, prod, r1, r2;
f>>T;
goCiur();
while(T--)
{
f>>n;
nr=1, s=1;
rad=int(sqrt(n));
for(i=1;i<=rad;i++)
{
d=0;
while(n%prim[i]==0)
{
d++;
n/=prim[i];
}
nr=(nr*(d+1))%MOD;
r1=( exp(prim[i],d+1)-1 )%MOD;
r2=( exp(prim[i]-1,MOD-2) )%MOD;
prod=(r1*r2)%MOD;
s=(s*prod)%MOD;
}
if( nr==1 && n!=1 )
{
nr=2;
s=n+1;
}
g<<nr<<' '<<s<<'\n';
}
}