Pagini recente » Cod sursa (job #2122922) | Cod sursa (job #2142596) | Cod sursa (job #1559089) | Cod sursa (job #1155201) | Cod sursa (job #925356)
Cod sursa(job #925356)
#include<cstdio>
#include<vector>
using namespace std;
#define MAX 2500001
#define pb push_back
#define MOD 9901
int A , B , s , pu;
vector<int> p;
bool v[MAX];
void ciur();
int pow(int a, long long b);
int main()
{
s = 1;
ciur();
freopen("sumdiv.in" , "r" , stdin );
scanf("%d%d" , &A , &B );
for( int j = 0 ; j < (int)p.size() && p[j]*p[j] <= A ; ++j )
{
pu = 0;
while(A%p[j]==0)
{
A/=p[j];
pu++;
}
if(pu)
s = (1ll*s*(pow(p[j],pu*B+1)-1)/(p[j]-1))%MOD;
}
if(A>1)s = (1ll*s*(pow(A,B+1)-1)/(A-1))%MOD;
freopen("sumdiv.out" , "w" , stdout );
printf("%d" , s);
return 0;
}
void ciur()
{
p.pb(2);
for(int i = 3 ; i <= MAX ; i+=2)
{
if(v[i])continue;
p.pb(i);
for(int j = i*i ; j <= MAX && j > 0; j+=(i<<1))
v[j] = 1;
}
}
int pow (int a , long long b)
{
int rez = 1 , nr = a;
for(int i = 0 ; (1<<i) <= b ; ++i)
{
if((1<<i)&b)
rez = (1ll*rez*nr)%MOD;
nr = (1ll*nr*nr)%MOD;
}
return rez;
}