Cod sursa(job #391172)

Utilizator Mishu91Andrei Misarca Mishu91 Data 5 februarie 2010 10:47:00
Problema Suma divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <fstream>

using namespace std;

const int MOD = 9901;

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

int A, B, S = 1;

int pow(int x, long long p)
{
	int sol = 1;

	for(; p; p >>= 1)
	{
		if(p & 1)
			sol = (sol * x) % MOD;
		x = (x * x) % MOD;
	}

	return sol;
}

int main()
{
	fin >> A >> B;

	int a = A;
	for(int i = 2; i*i <= A; ++i)
	{
		int p = 0;
		while(a % i == 0)
			a /= i, ++p;

		if(p)
			S *= (pow(i, 1LL*p*B+1)-1) * pow(i-1, MOD-2),
			S %= MOD;
	}

	if(a > 1)
		S *= (pow(a, B+1) - 1) * pow(a-1, MOD-2),
		S %= MOD;

	fout << S;
}