Pagini recente » Cod sursa (job #2536223) | Cod sursa (job #256499) | Cod sursa (job #3255748) | Cod sursa (job #2574108) | Cod sursa (job #196208)
Cod sursa(job #196208)
#include <stdio.h>
long long nr, j, a, b, rez, sum, SUM, i, puteri[60000], exp[60000];
int main()
{
freopen ("sumdiv.in", "rt", stdin);
freopen ("sumdiv.out", "wt", stdout);
scanf("%ld %ld", &a, &b);
if (a == 1 || !b)
{
printf("1\n");
return 0;
}
for (i = 2; i * i <= a; ++i)
{
if (a % i == 0)
{
puteri[++puteri[0]] = i;
while (a % i == 0)
{
++exp[++exp[0]];
a /= i;
}
exp[exp[0]] *= b;
}
}
if (a > 1)
{
puteri[++puteri[0]] = a;
exp[++exp[0]] = b;
}
for (i = 1; i <= puteri[0]; ++i)
{
sum = 1;
nr = 1;
for (j = 1; j <= exp[i]; ++j)
{
sum += (nr * puteri[i]) % 9901;
nr *= puteri[i];
nr %= 9901;
}
SUM += (sum % 9901);
SUM %= 9901;
}
SUM %= 9901;
printf("%ld\n", SUM);
return 0;
}