Pagini recente » Cod sursa (job #1227340) | Cod sursa (job #2697502) | Cod sursa (job #2795165) | Cod sursa (job #3151215) | Cod sursa (job #2449613)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
long long abmodc(long long a,long long b, long long c)
{
// a^b mod c
f>>a>>b>>c;
long long n=b;
long long p=1;
long long q=a;
while(n)
{
if(n%2==1) p*=q;
q*=q;
n/=2;
p%=c;
q%=c;
}
return p;
}
int a,b;
int main()
{
f>>a>>b;
int p=2;
int s=1;
int putere=0;
while(a%2==0 )
{
putere+=1;
a/=2;
}
putere*=b;
s*=abmodc(2, putere+1, 9901)-1;
for(p=3;a>1;p+=2)
{
// cout<<p<<" "<<a<<"\n";
putere=0;
while(a%p==0)
{
putere+=1;
a/=p;
}
putere*=b;
// g<<s<<" "<<putere+1<<" "<<p<<"\n";
s*=abmodc(p, putere+1, 9901)-1;
// g<<abmodc(p, putere+1, 9901)-1<<"<- ";
int t=p-1;
// g<<s<<"s; ";
s*=abmodc(t, 9899, 9901);
// g<<abmodc(t, 9899, 9901)<<"p; ";
s%=9901;
}
g<<s;
return 0;
}