Pagini recente » Cod sursa (job #6708) | Cod sursa (job #7011) | Cod sursa (job #20505) | Cod sursa (job #6641) | Cod sursa (job #756251)
Cod sursa(job #756251)
#include <fstream>
using namespace std;
#define dim 1001
#define mod 9901
int factor[dim], putere[dim];
int solve(int k)
{
long long baza=factor[k];
long long p=putere[k]+1;
long long sol=1;
for(;p;p>>=1)
{
if(p&1)
sol=(sol*baza)%mod;
baza=(baza*baza)%mod;
}
sol=(sol-1+mod)%mod;
if(sol==0)
return (putere[k]+1)%mod;
long long aux=sol;
p=mod-2;
sol=1;
baza=factor[k]-1;
for(;p;p>>=1)
{
if(p&1)
sol=(sol*baza)%mod;
baza=(baza*baza)%mod;
}
return (aux*sol)%mod;
}
int main()
{
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int a, b, aux, nr=0,i;
fin>>a >>b;
if(b==0)
{fout<<"1";return 0;}
if(a==0)
{
fout<<"0";
return 0;
}
aux=a;
for(i=2;i*i<=a;++i)
if(aux%i==0)
{
factor[++nr]=i;
while(aux%i==0)
{
++putere[nr];
aux/=i;
}
putere[nr]*=b;
}
if(aux!=1)
{
factor[++nr]=aux;
putere[nr]=b;
}
int s=1;
for(i=1;i<=nr;++i)
s=(s*solve(i))%mod;
fout<<s;
return 0;
}