Pagini recente » Cod sursa (job #1445093) | Cod sursa (job #823579) | Cod sursa (job #2520609) | Cod sursa (job #1379977) | Cod sursa (job #757492)
Cod sursa(job #757492)
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
#define MOD 9901
int k,a,b,v[1000],nr[1000],sum,s[1000];
void afisare()
{
ofstream f("sumdiv.out");
f<<sum;
f.close();
}
int exponent (int x, int nr )
{
if (nr==0 ) return 1 ;
int a=exponent (x,nr/2);
a*=a;
if (nr%2==0) return a% MOD;
else return (a*x)%MOD ;
}
void solve()
{
int i,j,sumi;
s[0]=1; sum=1;
for (i=1;i<=k;i++) {
v[i]%=MOD;
sumi=((exponent(v[i],nr[i]*b+1)-v[i])%MOD )*exponent (v[i]-1,MOD-2)% MOD;
s[i]=(sum*sumi)%MOD;
sum+=s[i]; sum%=MOD;
}
}
void divizori ()
{
int i ,x;
x=a; k=0;
for (i=2;i<=sqrt(a) && x>1; ++i ) {
if (x%i==0) {
k++; v[k]=i;
for (;x%i==0; x/=i,nr[k]++ ) ;
}
}
if (x >1 ) { v[++k]=x; nr[k]=1; }
}
int main()
{
ifstream f("sumdiv.in");
f>>a>>b ;
f.close();
divizori ();
solve();
afisare();
return 0;
}