Pagini recente » Cod sursa (job #3186772) | Cod sursa (job #1021142) | Cod sursa (job #2541345) | Cod sursa (job #2969794) | Cod sursa (job #688036)
Cod sursa(job #688036)
#include<fstream>
#define mod 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long A,B,a1,a2,exp;
long long putere(long long n,long long p){
long long r=1;
while(p!=0){
if(p%2==1)
r=(r*n)%mod;
n=(n*n)%mod;
p/=2;
}
return r;
}
void sumaDiv(long long A,long long B){
long long sum=1;
for(int i=2;i*i<=A;i++){
if(A%i==0){
exp=0;
while(A%i==0){
A/=i;
exp++;
}
exp*=B;
if(i%mod==1)
sum=sum*(exp+1)%mod;
else{
a1=(putere(i,exp+1)-1)%mod;
a2=(putere(i-1,mod-2))%mod;
sum=((((sum)%mod)*a1)%mod*a2)%mod;
}
}
}
if(A>1){
if(A%mod==1)
sum=(sum*(B%mod+1))%mod;
else{
a1=(putere(A,B+1)-1)%mod;
a2=(putere(A-1,mod-2))%mod;
sum=((((sum)%mod)*a1)%mod*a2)%mod;
}
}
g<<sum<<"\n";
}
int main (){
f>>A>>B;
sumaDiv(A,B);
return 0;
}