Pagini recente » Cod sursa (job #638578) | Cod sursa (job #2710756) | Cod sursa (job #615256) | Cod sursa (job #1392383) | Cod sursa (job #2928687)
#include <fstream>
using namespace std;
#define Nmax 7071
#define MOD 9901
bool ciur[Nmax + 1];
void lgput(int nr, int pow, int &rez)
{
if(pow == 0)
{
rez = 1;
return;
}
lgput(((long long)nr * nr) % MOD, pow / 2, rez);
if(pow % 2 == 1)
{
rez = ((long long)rez * nr) % MOD;
}
}
int main()
{
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int a, b, i, cnt, sol, rez;
long long j;
fin >> a >> b;
sol = 1;
for(i = 2; i * i <= Nmax && a > 1; i++)
{
if(ciur[i] == 0)
{
cnt = 0;
while(a % i == 0)
{
a /= i;
cnt++;
}
cnt = (cnt * b) % MOD;
lgput(i, cnt + 1, rez);
sol = ((long long)sol * (rez - 1) / (i - 1)) % MOD;
for(j = (long long)i * i; j <= Nmax; j += i)
{
ciur[j] = 1;
}
}
}
if(a != 1)
{
lgput(a, b + 1, rez);
sol = ((long long)sol * (rez - 1) / (a - 1)) % MOD;
}
fout << sol;
return 0;
}