Pagini recente » Cod sursa (job #835461) | Cod sursa (job #2438749) | Cod sursa (job #1150321) | Cod sursa (job #1740982) | Cod sursa (job #932641)
Cod sursa(job #932641)
#include <fstream>
#define In "sumdiv.in"
#define Out "sumdiv.out"
#define mod 9901
using namespace std;
int sum;
int a,b;
inline int Pow_log(int x,int n)
{
int 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()
{
int 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;
}