Cod sursa(job #2383800)
| Utilizator | Data | 19 martie 2019 19:52:55 | |
|---|---|---|---|
| Problema | Suma divizorilor | Scor | 30 |
| Compilator | cpp-64 | Status | done |
| Runda | excelenta-tema2 | Marime | 0.47 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f ( "sumdiv.in" ); ofstream g ( "sumdiv.out" );
int Rp(int b,int p)
{ int r=1;
while(p)
{ if(p&1) r=(1ULL*r*b)%9901;
b=(1ULL*b*b)%9901;
p>>=1;
}
return r;
}
int sumdiv(int n)
{ int s=0,d;
for(d=1;d*d<n;d++)
if(!(n%d)) s=s+d+n/d;
if(d*d==n) s+=d;
return s;
}
int main()
{ int a,b;
f>>a>>b;
g<<sumdiv(Rp(a,b)%9901);
return 0;
}
