Cod sursa(job #2435504)

Utilizator StefanSanStanescu Stefan StefanSan Data 4 iulie 2019 11:04:14
Problema Suma divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>

#define MOD 9901
#define ll unsigned long long 

using namespace std;

ifstream in("sumdiv.in");
ofstream out("sumdiv.out");

ll a, b, d, p = 1;

int power(int N, int P)
{
	int r = 1;
	while (P)
	{
		if (P % 2 == 1)
			r = (1LL * r * N) % MOD;
		N = (1LL * N * N) % MOD;
		P = P / 2;
	}
	return r;
}

int main() {
	ios_base::sync_with_stdio(false);
	in.tie(NULL), out.tie(NULL);
	in >> a >> b;

	d = 2;
	while (a != 1) {
		if (a % d == 0) {
			ll nr = 0;
			while (a % d == 0)nr++, a /= d;
			p *= ((1LL * power(d, b * nr + 1) - 1) / (1LL * (d - 1))) % MOD;
		}
		d++;
	}
	out << p;
}