Pagini recente » Cod sursa (job #2006358) | Cod sursa (job #1660746) | Cod sursa (job #772238) | Cod sursa (job #728032) | Cod sursa (job #874549)
Cod sursa(job #874549)
#include<fstream>
#include<bitset>
#define mod 9901
#define lim 100003
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
bitset<lim>ok;
long long n,x,i,A,B,j;
long long prim[lim];
long long putere(long long n,long long p){
long long r=1;
while(p!=0){
if(p%2)
r=(n*r)%mod;
n=(n*n)%mod;
p/=2;
}
return r;
}
void ciur(){
prim[-1]=1;
prim[1]=2;
for(i=3;i<=lim;i+=2){
if(!ok[i]){
prim[++prim[-1]]=i;
for(j=i+i;j<=lim;j+=i)
ok[j]=1;
ok[i]=1;
}
}
}
void sumNRdiv(long long x){
long long exp,a1,a2,suma;
suma=1;
for(long long i=1;i<=prim[-1],prim[i]*prim[i]<=x;i++){
if(x%prim[i]==0){
exp=0;
while(x%prim[i]==0){
exp++;
x/=prim[i];
}
a1=(putere(prim[i],exp*B+1)-1)%mod;
a2=putere(prim[i]-1,mod-2)%mod;
suma=(((suma*a1)%mod)*a2)%mod;
}
}
if(x!=1){
a1=(putere(x,B+1)-1)%mod;
a2=putere(x-1,mod-2)%mod;
suma=(((suma*a1)%mod)*a2)%mod;
}
g<<suma<<"\n";
}
int main (){
f>>A>>B;
ciur();
sumNRdiv(A);
return 0;
}