Pagini recente » Cod sursa (job #159252) | Cod sursa (job #252483) | Profil UPB_Gheorghe_Niculae_Stefan | Cod sursa (job #717570) | Cod sursa (job #3298042)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD=9973,MAX=1e6,MAX2=1000;
int n,i,p[100005],t,x,nr,j,nrdiv,sumdiv;
bool ciur[MAX+5];
int putere(int x, int p)
{
if (p==0)
return 1;
if (p&1)
return x*putere(x,p-1)%MOD;
int P=putere(x,p>>1)%MOD;
return P*P%MOD;
}
void cr()
{
ciur[0]=ciur[1]=1;
for (i=2; i*i<=MAX; i++)
if (!ciur[i])
for (j=i*i; j<=MAX; j=j+i)
ciur[j]=1;
for (i=1; i<=MAX; i++)
if (!ciur[i])
p[++nr]=i;
}
void solve(int x)
{
i=1;
int pt;
while (i<=nr && p[i]*p[i]<=x)
{
pt=0;
while (x%p[i]==0)
{
x/=p[i];
pt++;
}
if (pt>0)
{
sumdiv=(putere(p[i],pt+1)-1)/(p[i]-1)%MOD*sumdiv%MOD;
nrdiv=nrdiv*(pt+1);
}
i++;
}
if (x>1)
{
nrdiv=nrdiv*2;
sumdiv=(x+1)%MOD*sumdiv%MOD;
}
}
int main()
{
cr();
fin>>t;
while (t)
{
fin>>x;
nrdiv=1; sumdiv=1;
solve(x);
fout<<nrdiv<<" "<<sumdiv<<"\n";
t--;
}
return 0;
}