Cod sursa(job #1319599)
Utilizator | Data | 17 ianuarie 2015 10:51:17 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.06 kb |
#include<fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long t,M,a,c,s,x,d,e,p,y,z,i;
int main()
{
fin>>t;
M=9973;
for(i=1;i<=t;i++)
{
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;
}