Pagini recente » Cod sursa (job #244135) | Cod sursa (job #2708403) | Cod sursa (job #2870500) | Cod sursa (job #979952) | Cod sursa (job #923011)
Cod sursa(job #923011)
#include<cstdio>
#include<vector>
#include<cmath>
#include<fstream>
using namespace std;
#define LIM 1000001
#define MOD 9901
#define pb push_back
int s , pu ;
int A,B,d;
vector<int>p;
bool v[LIM];
void ciur();
long long pow(int a , int b);
int main()
{
ciur();
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
f>>A>>B;
s = 1;
for(int j = 0 ; j < (int)p.size() && 1ll*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;
g<<s<<"\n";
return 0;
}
void ciur()
{
p.pb(2);
for(int i = 3 ; i <= LIM ; i+=2 )
{
if(v[i])continue;
p.pb(i);
for(long long j = 1ll*i*i ; j <= LIM ; j+= i<<1 )
v[j] = 1;
}
}
long long pow(int a ,int b)
{
long long rez = 1 , n = a;
for(int i = 0 ; (1<<i) <= b ; ++i )
{
if((1<<i)&b)
rez=(1ll*rez*n)%MOD;
n=(n*n)%MOD;
}
return rez;
}