Cod sursa(job #2374634)
| Utilizator | Data | 7 martie 2019 19:44:51 | |
|---|---|---|---|
| Problema | Suma divizorilor | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.81 kb |
#include<bits/stdc++.h>
#define mod 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int a,b,sol;
int put(int ce, int la)
{
int sol=1;
while(la)
{
if(la&1)
{
sol=(sol*ce)%mod;
}
ce=(ce*ce)%mod;
la>>=1;
}
return sol;
}
int inv(int x)
{
return put(x,mod-2);
}
int main()
{
f>>a>>b;
int d=2;
while(a!=1)
{
if(a%d==0)
{
int e=0;
while(a%d==0)
{
e++;
a/=d;
}
if(e)
{
sol+=(1LL*(put(d,e*b+1)-1)*inv(d-1))%mod;
}
}
if(d==2)
d++;
else
d+=2;
}
g<<sol;
}
