Pagini recente » Cod sursa (job #636045) | Cod sursa (job #598910) | Cod sursa (job #212701) | Cod sursa (job #315484) | Cod sursa (job #2633083)
#include<bits/stdc++.h>
using namespace std;
#define INIT ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define mp make_pair
#define pb push_back
#define ft first
#define sc second
#define ll long long
#define pii pair<int, int>
#define count_bits __builtin_popcount
#define int ll
#define MOD 9901
ifstream fin("sumdiv.in"); ofstream fout("sumdiv.out");
#define cin fin
#define cout fout
int a, b;
int totient(int y){
int x=y;
int res=1;
for(int i=2; i<=x; i++){
if(x%i==0){
int pw=1;
while(x%i==0){
x/=i; pw*=i;
}
res*=(pw-pw/i);
}
}
if(x>1){
res*=(x-1);
}
return res;
}
int fi=totient(MOD);
int exp(int x, int e){
if(e==0){return 1;}
if(e==1){return x;}
return ( (exp(x, e%2))*( exp( (x*x)%MOD, e/2) ) )%MOD;
}
int inv(int x){
return exp(x, fi-1);
}
int32_t main(){
INIT
cin>>a>>b;
vector<pii> pr;
for(int i=2; i<=( (int)(sqrt(a)+2) ) && i<=a; i++){
if(a%i==0){
int e=0;
while( (a%i)==0){
a/=i; e++;
}
pr.pb(mp( (i)%MOD, e*b) );
}
}
if(a>1){
pr.pb(mp(a, b) );
}
int res=1;
for(int i=0; i<pr.size(); i++){
res=((res*( ( (( exp(pr[i].ft, pr[i].sc+1)-1 +MOD )%MOD)*( (inv( (pr[i].ft-1))+MOD)%MOD ))%MOD ))+MOD)%MOD;
}
cout<<res;
return 0;
}