Cod sursa(job #3211686)
| Utilizator | Data | 9 martie 2024 23:46:26 | |
|---|---|---|---|
| Problema | Suma divizorilor | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
long long solve (int exp, int nr)
{
if(exp==0)
return 1;
else
{
int p = solve(exp/2, nr);
if(exp%2==0)
return p*p;
else
return p*p*nr;
}
}
int main()
{
int a,b;
in>>a>>b;
long long nr=solve(b, a), s=1;
if(nr>1)
s=(s+nr)%9901;
for(int d=2; d*d<=nr; ++d)
{
if(nr%d==0)
{
s=(s+d)%9901;
if(d*d!=nr)
s=(s+nr/d)%9901;
}
}
out<<s;
return 0;
}
