Pagini recente » Cod sursa (job #346473) | Cod sursa (job #1886167) | Cod sursa (job #1001626) | Cod sursa (job #468019) | Cod sursa (job #757453)
Cod sursa(job #757453)
#include <fstream>
#define MOD 9901
#define NMAx 7075
using namespace std;
int A,B,Sol=1,Nr,Prim[NMAx];
bool Viz[NMAx];
int exp_log(int A,int P) {
int Step=1,Rez=1;
while(Step<=P) {
if(Step&P)
Rez=(Rez*A)%MOD;
A=(A*A)%MOD;
Step<<=1;
}
return Rez;
}
void Solve() {
int i,K,X,Y;
if(A==0)
{Sol=0;return;}
for(i=1;(A>1&&Prim[i]*Prim[i]<=A);i++)
if(A%Prim[i]==0) {
for(K=0;A%Prim[i]==0;K++,A/=Prim[i]);
X=exp_log(Prim[i],B*K+1)-1;
Y=exp_log(Prim[i]-1,MOD-2);
Sol=(Sol*((X*Y)%MOD))%MOD;
}
if(A>1) {
X=exp_log(A,B+1)-1;
Y=exp_log(A-1,MOD-2);
Sol=(Sol*((X*Y)%MOD))%MOD;
}
}
void Ciur() {
int i,j;
Prim[++Nr]=2;
for(i=3;i<NMAx;i+=2)
if(!Viz[i]) {
Prim[++Nr]=i;
for(j=i;j<NMAx;j+=i)
Viz[j]=1;
}
}
void Citire() {
ifstream in("sumdiv.in");
in>>A>>B;
in.close();
}
void Afis() {
ofstream out("sumdiv.out");
out<<Sol<<'\n';
out.close();
}
int main() {
Citire();
Ciur();
Solve();
Afis();
return 0;
}