Pagini recente » Cod sursa (job #3186329) | Cod sursa (job #1821425) | Cod sursa (job #426680) | Cod sursa (job #1784002) | Cod sursa (job #879044)
Cod sursa(job #879044)
#include <fstream>
#include <vector>
#define pb push_back
#define PII pair<int, int>
#define f first
#define s second
#define mp make_pair
#define REST 9901
using namespace std;
int A, B;
vector< PII > V;
void descompune(int A, vector<PII> &V)
{
for(int i = 2; i * i <= A; i++)
if(A % i == 0)
{
int exp = 0;
while(A % i == 0) A /= i, exp++;
V.pb(mp(i, exp * B));
}
if(A != 1) V.pb(mp(A, B));
}
int lgput(int base, int put)
{
int rez = 1;
for(; put; put >>= 1)
{
if(put & 1) rez = (1LL * rez * base) % REST;
base = (1LL * base * base) % REST;
}
return rez;
}
int main()
{
ifstream in("sumdiv.in"); in>>A>>B; in.close();
descompune(A, V);
int rez = 1, add;
for(size_t i = 0; i < V.size(); i++)
{
add = lgput(V[i].f, V[i].s + 1) - 1;
if(add < 0) add += REST;
add = (1LL * add * lgput(V[i].f - 1, REST - 2)) % REST;
rez = (rez * add) % REST;
}
ofstream out("sumdiv.out"); out<<rez; out.close();
return 0;
}