Cod sursa(job #3164967)
| Utilizator | Data | 4 noiembrie 2023 21:05:19 | |
|---|---|---|---|
| Problema | Suma divizorilor | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("sumdiv.in");
ofstream cout("sumdiv.out");
int p=1,mod=9901,prod=1;
int put(int a,int b)
{
p=1;
while(b>0)
{
if(b%2==1)
p=(p*a)%mod;
a=(a*a)%mod;
b/=2;
}
return p%mod;
}
int invmod(int x)
{
return put(x,mod-2);
}
int main()
{
int a,b,cnt=0,t,d=2;
cin>>a>>b;
while(a>1)
{
cnt=0;
if(a%d==0)
{
while(a%d==0)
{
cnt++;
a/=d;
}
t=put(d,cnt*b+1);
prod*=((t-1)*invmod(d-1))%mod;
}
d++;
}
cout<<prod;
return 0;
}
