Pagini recente » Cod sursa (job #613398) | Cod sursa (job #1128356) | Cod sursa (job #312476) | Cod sursa (job #1241535) | Cod sursa (job #1122773)
//http://www.infoarena.ro/problema/sumdiv
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int MOD = 9901;
ll A, B, sd = 1;
int pow(int x, int p)
{
int rez = 1; x %= MOD;
for(; p; p >>= 1)
{
if(p & 1)
{
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
}
return rez;
}
int main()
{
f>>A>>B;
for(int i=2;i*i<=A;i++)
{
if(A%i) continue;
ll fr=0;
while(A%i==0)
{
A/=i;
fr+=B;
}
ll p1 = (pow(i, fr + 1) - 1 + MOD) % MOD;
ll p2 = (pow(i - 1, MOD - 2)) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if(A > 1)
if(A % MOD != 1)
{
ll p1 = (pow(A, B + 1) - 1 + MOD) % MOD;
ll p2 = (pow(A - 1, MOD - 2)) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
else
sd = (1LL * sd * (B + 1)) % MOD;
g<<sd;
return 0;
}