Cod sursa(job #720163)

Utilizator misinoonisim necula misino Data 22 martie 2012 13:34:41
Problema Suma divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long	s=1,i,b,a,a1,a2,e;
long long putere(long long n,long long p)
{long long x=1,q,nr;
q=p;
nr=n;
while(p)
{if(p&1)
	x=(x*nr)%9901;
nr=(nr*nr)%9901;
p/=2;
}
p=q;
return x;
}
int main()
{f>>a>>b;
for(i=2;i*i<=a;++i)
	if(a%i==0)
	{e=0;
	while(a%i==0)
	{++e;
	a=a/i;
	}
	e=e*b;
	if(i%9901==1)
		s=s*(e+1)%9901;
	else
	{a1=(putere(i,e+1)+9900)%9901;
	a2=(putere(i-1,9901-2))%9901;
	s=((((s)%9901)*a1)%9901*a2)%9901;
	}
	}
if(a!=1)
{if(a%9901==1)
	s=(s*(b%9901+1))%9901;
else
{a1=(putere(a,b%9901+1)+9900)%9901;
a2=(putere(a-1,9899))%9901;
s=((((s)%9901)*a1)%9901*a2)%9901;
}}
g<<s<<'\n';
f.close();
g.close();
return 0;
}