Cod sursa(job #1319598)
Utilizator | Data | 17 ianuarie 2015 10:48:41 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.08 kb |
#include<fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long m,t,i,a,c,s,j,e,d,y,x,z,p;
int main()
{
fin>>t;
m=9973;
for(i=1;i<=t;i=i+1)
{
fin>>a;
c=1;
s=1;
x=a;
d=2;
while(d*d<=x)
{
if(x%d==0)
{
e=0;
while(x%d==0)
{
e=e+1;
x=x/d;
}
c=c*(e+1);
p=1;
y=d;
z=e+1;
while(z!=0)
{
if(z%2==1)
{
p=(p*y);
}
y=(y*y);
z=z/2;
}
s=(s*(p-1)/(d-1));
}
d=d+1;
}
if(x>1)
{
c=c*2;
s=s*(x+1);
}
fout<<c<<" "<<s%m<<"\n";
}
fin.close();
fout.close();
return 0;
}