Pagini recente » Cod sursa (job #3242317) | Cod sursa (job #1052321) | Cod sursa (job #1591280) | Cod sursa (job #1052327) | Cod sursa (job #1248657)
#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;
int T, prim[1000000], countP;
bool ciur[2000005];
void goCiur()
{
int i,j;
prim[++countP] = 2;
for(i=3;i<=NCIUR;i+=2)
if(!ciur[i])
{
prim[++countP]=i;
if(i < 1010)
for(j=i*i; j<=NCIUR; j+=2*i)
ciur[j] = true;
}
}
int exp ( int x , int y )
{
int 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()
{
int i, nr, s, d, rad, prod, r1, r2;
f>>T;
goCiur();
while(T--)
{
f>>n;
nr=1, s=1;
rad=int(sqrt(n))+1;
for(i=1; i<=countP && prim[i]<=rad; i++)
{
if( n%prim[i] ) continue;
d=0;
while(n%prim[i]==0)
{
d++;
n/=prim[i];
}
nr=nr*(d+1);
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( n!=1 )
{
nr=nr*2;
s=(s*(n+1))%MOD;
}
g<<nr<<' '<<s<<'\n';
}
}