Pagini recente » Cod sursa (job #3198325) | Cod sursa (job #304471) | Cod sursa (job #2293876) | Cod sursa (job #970554) | Cod sursa (job #933514)
Cod sursa(job #933514)
#include <fstream>
#include <algorithm>
#define mod 9901
using namespace std;
long long putere(long long bz, long long xp)
{
if(xp==0)
return 1;
if(bz%9901==0 || bz%mod==1)
return (xp+1)%9901;
else if(xp%2) return (((bz%mod*(putere(bz, xp/2)%mod))%mod)*(putere(bz, xp/2)%mod))%mod;
return (((putere(bz, xp/2))%mod)*(putere(bz, xp/2)%mod))%mod;
}
long long a, b, aux, phi, i, pr[100001], ex[100001];
long long rez, k;
int main()
{
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
f>>a>>b;
phi=mod-1;
for(i=2; i*i<=a; i++)
{
if(a%i==0)
{
k++;
pr[k]=i;
while(a%i==0)
{
ex[k]++;
a/=i;
}
}
}
if(a!=1)
{
if(!binary_search(pr+1, pr+k+1, a))
{
k++;
pr[k]=a;
ex[k]++;
}
else ex[lower_bound(pr+1, pr+k+1, a)-pr]++;
}
rez=1;
for(i=1; i<=k; i++)
{
ex[i]*=b;
//ex[i]%=mod;
long long act=((putere(pr[i], ex[i]+1))-1)%mod;
long long act2=(putere(pr[i]-1, phi-1)%mod);
rez=(rez*((act*act2)%mod))%mod;
if(rez<0)
rez+=mod;
}
if(rez<0)
rez+=mod;
g<<rez;
}