Pagini recente » Cod sursa (job #1159675) | Cod sursa (job #1041122) | Cod sursa (job #3254590) | Cod sursa (job #2432003) | Cod sursa (job #1379810)
#include<fstream>
#include<iostream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long N,i,j,T,rad,psuma,pnr,put,nr,exponent,da,putere;
long long nrprime[500100];
bool nprim[500100];
void eratos();
long long pow_care_merge_cum_trebuie(int,int);
int main()
{
f>>T;
nrprime[++nrprime[0]]=2;
eratos();
for (i=0;i<T;++i)
{
f>>N;
rad=sqrt(N);
psuma=pnr=1;
put=0;
for (j=1;j<=nrprime[0] && nrprime[j]<=rad;++j)
{
if (N%nrprime[j]==0)
{
put=0;
while (N%nrprime[j]==0)
{
++put;
N/=nrprime[j];
}
pnr*=(put+1);
nr=nrprime[j];
exponent=put+1;
putere=pow_care_merge_cum_trebuie(nr,exponent);
da=(putere-1)/(nr-1);
psuma*=da;
}
}
if (N>1)
{
pnr*=2;
nr=N;
exponent=2;
putere=pow_care_merge_cum_trebuie(nr,exponent);
da=(putere-1)/(nr-1);
psuma*=da;
}
g<<pnr<<' '<<psuma%9973<<'\n';
}
f.close();g.close();
return 0;
}
void eratos()
{
for (i=1;(i<<1)+1<=1000005;++i)
{
if (!nprim[i])
{
nrprime[++nrprime[0]]=(i<<1)+1;
for (j=(i*i<<1)+(i<<1);(j<<1)+1<=1000005;j+=(i<<1)+1)
nprim[j]=true;
}
}
}
long long pow_care_merge_cum_trebuie(int b,int e)
{
long long prod=1;
for (int cont=0;cont<e;++cont)
prod*=b;
return prod;
}