Pagini recente » Cod sursa (job #1601620) | Cod sursa (job #130736) | Cod sursa (job #28184) | Cod sursa (job #1188296) | Cod sursa (job #434311)
Cod sursa(job #434311)
#include <cstdio>
const int MOD = 9901;
int A, B;
int pw(int a, int p)
{
int rez = 1;
a = a % MOD;
for(; p ; p = p>>1)
{
if(p & 1)
rez = (rez * a) % MOD , p--;
a = (a * a) % MOD;
}
return rez;
}
void rezolva()
{
long long n = A;
int S = 1;
for(int i = 2 ; i * i <= A ; i++)
if(n % i == 0)
{
int exp = 0;
while(n % i == 0)
{
n /= i;
exp++;
}
S = ((S * pw(i, B * exp + 1) + MOD - 1) % MOD * pw(i - 1, MOD - 2)) % MOD;
}
if(n > 1)
S = ((S * (pw(n, B + 1) + MOD - 1) % MOD) * pw(n - 1, MOD - 2)) % MOD;
printf("%d", S);
}
int main()
{
freopen("sumdiv.in","r",stdin);
freopen("sumdiv.out","w",stdout);
scanf("%d%d",&A,&B);
rezolva();
return 0;
}
/*
#include <algorithm>
#include <vector>
#include <bitset>
using namespace std;
#define pb push_back
#define MOD 9901
long long n,m,sd;
long long lgput (long long n,long long p)
{
long long rez;
n%=MOD;
for (rez=1; p; p>>=1)
{
if (p&1)
rez=(rez*n)%MOD;
n=(n*n)%MOD;
}
return rez;
}
void solve ()
{
long long i,exp;
sd=1;
for (i=2; i*i<=n; ++i)
if (n%i==0)
{
for (exp=0; n%i==0; n/=i)
++exp;
if (i%MOD==1)
sd=(sd*(exp*m+1))%MOD;
else
sd=((sd*(lgput (i,exp*m+1)+MOD-1)%MOD)*lgput (i-1,MOD-2))%MOD;
}
if(n>1)
{
if (n%MOD==1)
sd=(sd*(m+1))%MOD;
else
sd=((sd*(lgput (n,m+1)+MOD-1)%MOD)*lgput (n-1,MOD-2))%MOD;
}
printf ("%lld",sd);
}
int main ()
{
freopen ("sumdiv.in","r",stdin);
freopen ("sumdiv.out","w",stdout);
scanf ("%lld%lld",&n,&m);
solve ();
return 0;
}*/