Pagini recente » Cod sursa (job #1153230) | Cod sursa (job #1451345) | Cod sursa (job #3040253) | Cod sursa (job #1662394) | Cod sursa (job #932643)
Cod sursa(job #932643)
#include <fstream>
#define In "sumdiv.in"
#define Out "sumdiv.out"
#define mod 9901
using namespace std;
long long sum;
long long a,b;
inline long long Pow_log(long long x,long long n)
{
long long p=1;
while(n)
{
if(n&1)
{
n--;
p = (p*x % mod ) %mod;
}
n>>=1;
x = (x%mod*x%mod)%mod;
}
return p;
}
inline void Rezolvare()
{
long long d=2,putere,x,p;
sum = 1;
if(a%d==0)
{
putere=0;
while(a%d==0)
{
putere++;
a/=d;
}
putere*=b;
putere++;
p = Pow_log(d,putere)-1;
if(p<0)
p+=mod;
x = Pow_log(d-1,mod-2);
p= (p*x)% mod ;
sum = (sum* p% mod) %mod;
}
d = 3;
while(d*d<=a && a>1)
{
if(a%d==0)
{
putere = 0;
while(a%d==0)
{
putere++;
a/=d;
}
putere*=b;
putere++;
p = Pow_log(d,putere)-1;
if(p<0)
p+=mod;
x = Pow_log(d-1,mod-2);
p= (p*x)% mod ;
sum = (sum* p% mod) %mod;
}
d+=2;
}
if(a>1)
{
p = Pow_log(a,b+1)-1;
if(p<0)
p+=mod;
x = Pow_log(a-1,mod-2);
p= (p*x)% mod ;
sum = (sum* p% mod) %mod;
}
}
int main()
{
ifstream fin(In);
fin>>a>>b;
fin.close();
if(a!=0)
Rezolvare();
ofstream fout(Out);
fout<<sum<<"\n";
fout.close();
return 0;
}