Pagini recente » Cod sursa (job #2397907) | Cod sursa (job #521359) | Cod sursa (job #529355) | Cod sursa (job #861278) | Cod sursa (job #3187808)
#include <fstream>
using namespace std;
ifstream cin ("sumdiv.in");
ofstream cout ("sumdiv.out");
const int mod = 9901;
int Exponentiere (int baza , int exponent)
{
int rezultat = 1;
while (exponent)
{
if (exponent & 1)
{ rezultat = rezultat * baza % mod; }
baza = baza * baza % mod;
exponent >>= 1;
}
return rezultat;
}
int ExponentiereSuma (int baza , int exponent)
{
if (exponent == 0)
{ return 1; }
if (exponent & 1)
{ return (baza * ExponentiereSuma(baza , exponent - 1) + 1) % mod; }
const int factor = ExponentiereSuma(baza , exponent >> 1);
return (factor + (factor - 1) * Exponentiere(baza , exponent >> 1) % mod) % mod;
}
int main ()
{
int valoare , exponent;
cin >> valoare >> exponent;
int suma = 1;
for (int factor = 2 ; factor * factor <= valoare ; factor++) {
if (valoare % factor == 0)
{
int _exponent = 0;
while (valoare % factor == 0) {
valoare /= factor;
_exponent++;
}
suma = suma * ExponentiereSuma(factor , exponent % (mod - 1) * _exponent) % mod;
}
}
if (valoare > 1)
{ suma = suma * ExponentiereSuma(valoare % mod , exponent) % mod; }
cout << suma;
cout.close(); cin.close();
return 0;
}