Pagini recente » Cod sursa (job #90764) | Cod sursa (job #1715079) | Cod sursa (job #2008058) | Cod sursa (job #277989) | Cod sursa (job #1184964)
#include <fstream>
#include <bitset>
#define MOD 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("subdiv.out");
int a, b, prime[10005], numpr, k, sumd, nrd, powr;
bitset<1010> 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*=base;
base*=base;
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;
nrd=1;
sumd=1;
for (int i=1; 1LL*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)/(prime[i]-1))%MOD;
}
if (a!=1)
sumd=(sumd*(powd(a, b+1)-1)/(a-1))%MOD;
g<<sumd<<"\n";
return 0;
}