Cod sursa(job #2435555)

Utilizator StefanSanStanescu Stefan StefanSan Data 4 iulie 2019 11:53:26
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 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;
	ll nr = 0;
	while (a % 2 == 0)a /= 2,nr++;
	p = ((power(2, b * nr + 1) - 1) / (2 - 1)) % MOD;
	for (int i = 3; i <= sqrt(a); i += 2) {
		nr = 0;
		if (a % i == 0) {
			while (a % i == 0)a /= i, nr++;
			p *= ((power(i, b * nr + 1) - 1) / (i - 1)) % MOD;
		}
	}
	if (a > 2) p *= ((power(a, b + 1) - 1) / (a - 1)) % MOD;;
	out << p;
}