Pagini recente » Cod sursa (job #2782400) | Cod sursa (job #1955448) | Cod sursa (job #2551475) | Cod sursa (job #1293998) | Cod sursa (job #582884)
Cod sursa(job #582884)
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long putere,sumad,nr;
long long ridicare(int baza,int expo)
{int k;
putere=1;
for(k=1;k<=expo+1;k++)
putere*=baza;
return putere;
}
int prim(long long numar)
{int ok,d;
ok=1;
if(numar==1) return 1; else
for(d=2;d<=sqrt(numar);d++)
if(numar%d==0 ) ok=0;
return ok;
}
int main()
{int i,t,j,fm,nrd,good;
f>>t;
for(i=1;i<=t;i++)
{f>>nr; nrd=sumad=1; if(nr==1) {nrd*=1; sumad*=1;} else if(nr==0) {nrd*=0; sumad*=0;} else if(prim(nr)) {nrd*=2; sumad*=(1+nr); } else {
good=0;
for(j=2;j<=nr;j++)
{fm=0; if(nr%j==0 && prim(j))
{while(nr%j==0) {fm++; nr/=j;}
nrd*=(fm+1); sumad*=(ridicare(j,fm)-1)/(j-1); }
if(prim(nr) && good==0) {good=1; nrd*=2; sumad*=(ridicare(nr,1)-1)/(nr-1); }
}
}g<<nrd<<" "<<sumad%9973<<'\n';}
return 0;
}