Cod sursa(job #2745708)

Utilizator mafiotxrobeert mafiotx Data 26 aprilie 2021 22:06:02
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream> 
#include <fstream>
#include <iomanip>
#include <cmath>
#include <algorithm> 
#include <cstring>

using namespace std;

string NumeFisier = "date";

ifstream fin(NumeFisier + ".in");
ofstream fout(NumeFisier + ".out");

typedef unsigned long long int ull;

long long  MOD = 9901;

long long A, B;
long long fastexpo(long long baza, long long exp)
{
	long long rez = 1LL;
	while (exp)
	{
		if (exp % 2LL == 1LL)
			rez =rez * baza % MOD;
		baza =baza * baza % MOD;
		exp >>= 1LL;
	}
	return rez;
}



long long SUMADIV(long long numar)
{
	long long sumadiv = 1;
	long long i = 2;
	while (numar > 1)
	{
		long long exp = 0;
		while (numar % i == 0)
		{
			numar /= i;
			exp++;
		}
		if (exp)
			sumadiv *= (fastexpo(i, B	 * exp + 1) - 1LL) % MOD / (i - 1LL) % MOD;
		i++;
		if (i * i > numar)
			i = numar;

	}
	return sumadiv;;

}


int main()
{
	fin >> A >> B;
	fout << SUMADIV(A);
}