Pagini recente » Cod sursa (job #1346286) | Cod sursa (job #2072383) | Statistici Paunescu Adrian (salazar11) | Cod sursa (job #2667271) | Cod sursa (job #1189326)
#include <fstream>
#include <bitset>
#define MOD 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int a, b, prime[10005], numpr, k, sumd, nrd, powr;
bitset<10010> ciur;
inline void erast()
{
ciur[1]=1;
for (int i=2; i<=10001; i++)
if (ciur[i]==0)
for (int j=2; j*i<=10001; j++)
ciur[j*i]=1;
}
inline long long powd(long long base, int powr)
{
long long res=1;
while (powr!=0) {
if (powr%2==1)
res=((res%MOD)*(base%MOD))%MOD;
base=((base%MOD)*(base%MOD))%MOD;
powr=powr/2;
}
return res;
}
int main()
{
erast();
for (int i=1; i<=10001; i++)
if(ciur[i]==0)
prime[++k]=i;
f>>a>>b;
if (a==1)
g<<1;
else {
nrd=1;
sumd=1;
for (int i=1; prime[i]*prime[i]<=a; i++) {
powr=0;
while (a%prime[i]==0) {
powr++;
a/=prime[i];
}
if (powr>0)
sumd=(sumd*(powd(prime[i], powr*b+1)-1)*powd((prime[i]-1), MOD-2))%MOD;
}
if (a!=1)
sumd=(sumd*(powd(a, b+1)-1+MOD)*powd(a-1, MOD-2))%MOD;
g<<sumd<<"\n";
}
return 0;
}