Cod sursa(job #3163529)

Utilizator Minea_TheodorMinea Theodor Stefan Minea_Theodor Data 31 octombrie 2023 16:09:56
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

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

int pow(int x, long long p)
{
	x %= 9901;
	int r = 1;
	for(; p; p >>= 1)
	{
		if(p & 1)
			r = (r * x) % 9901;
		x = (x * x) % 9901;
	}

	return r;
}

int make(int i, int p, int b)
{
	if(i % 9901 == 1)
		return p*b + 1;

	return (pow(i, 1LL*p*b+1) + 9901 - 1) * (pow(i-1, 8999)) % 9901;
}

int main()
{
    int a, b, s=1;
	fin >> a >> b;
	int ca = a;
	for(int i = 2; i*i <= a; ++i)
	{
		int p = 0;
		while(ca % i == 0)
        {
            ca /= i;
            p++;
        }
		if(p)
			s*=make(i, p, b),
			s%=MOD;
	}

	if(ca > 1)
		r*=make(ca, 1, b),
    r%=9901;
	fout << r;
	return 0;
}