Pagini recente » Cod sursa (job #81970) | Cod sursa (job #3170490) | Cod sursa (job #2961586) | Cod sursa (job #934991) | Cod sursa (job #2386597)
#include<bits/stdc++.h>
#define ll long long
#define mod 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
ll a, b;
struct factor
{
ll div, exp;
} fact[1000001];
ll t;
bool v[1000001];
ll prim[1000001], nr=1;
void ciur(ll q)
{
prim[1]=2;
for(ll i=3; i<=q; i+=2)
{
if(v[i]==0)
{
for(ll j=2*i; j<=q; j+=i)
v[j]=1;
prim[++nr]=i;
}
}
}
void desc(ll x)
{
ciur(x);
ll nr1=1;
while(prim[nr1]*prim[nr1]<=x)
{
if(x%prim[nr1]==0)
{
ll ps=0;
while(x%prim[nr1]==0)
{
x/=prim[nr1];
ps++;
}
fact[++t].div=prim[nr1];
fact[t].exp=ps;
}
nr1++;
}
}
ll log_pow(ll x, ll p)
{
ll r=1;
while(p)
{
if((p & 1)) r=(r*x)%mod;
x=(x*x)%mod;
p=p>>1;
}
return r;
}
ll sum_div(ll x)
{
desc(x);
ll s=1;
for(ll i=1; i<=t; i++)
{
s=(s*(((log_pow(fact[i].div, fact[i].exp)))-1)/(fact[i].div-1))%mod;
}
return s;
}
int main()
{
f>>a>>b;
ll z=log_pow(a, b);
g<<sum_div(z);
return 0;
}