Cod sursa(job #756855)

Utilizator lucian666Vasilut Lucian lucian666 Data 10 iunie 2012 16:10:36
Problema Suma divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#define Mod 9901
using namespace std;
ofstream out("sumdiv.out");
long long int A,B;
int pb(long long int,long long int);
long long  calc(long long int );
int main()
{
	ifstream in("sumdiv.in");
	in>>A>>B;
	long long int rez=pb(A,B);
	out<<calc(rez)%9901;
	return 0;
}
int pb(long long int baza,long long int expo)
{
	int i;
	int b[50],nrb=0;
	for(;expo;expo/=2)
		b[++nrb]=expo%2;
	int rez=1;
		for(i=nrb;i;i--)
		{
			rez=1LL*rez*rez%Mod;
			if(b[i])
				rez=1LL*rez*baza%Mod;
		}
		return rez;
}
long long  calc(long long int  n)
{
	long long int s=0;
	long long int i;
	for(i=1;i<=n;i++)
		if(n%i==0)
			s+=i;
		return s;
}