Cod sursa(job #583039)
Utilizator | kill03 informatician29 | Data | 17 aprilie 2011 15:56:34 |
---|---|---|---|
Problema | Suma divizorilor | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long numar,s=1,i=2,fm,p,k;
long double a,b;
long long rid(long long baza,long long expo)
{
p=1;
for(k=1;k<=expo;k++)
p*=baza;
return p;
}
int main()
{
f>>a>>b;
if(a==0) s=0; else if(b==0) s=1; else { numar=pow(a,b);
do
{fm=0;
while(numar%i==0)
{fm++; numar/=i;}
s*=(rid(i,(fm+1))-1)/(i-1);
i++;
}while(numar!=1);}
g<<s%9901;
return 0;
}