Pagini recente » Cod sursa (job #883099) | Cod sursa (job #366466) | Cod sursa (job #154021) | Cod sursa (job #2506549) | Cod sursa (job #589832)
Cod sursa(job #589832)
#include <fstream>
#define REST 9901
using namespace std;
int fact[1<<17],pu[1<<17],sz;
int putere(int n, int p) {
int pp,a;
pp=1;
a=n%REST;
for(;p;) {
if(p&1) {
pp*=(a%REST);
pp%=REST;
}
a*=(a%REST);
a%=REST;
p>>=1;
}
return pp;
}
void desc(int x) {
for(int i=2; i*i<=x; ++i) if(0==x%i) {
int p=0;
for(;0==x%i; ++p,x/=i);
++sz;
fact[sz]=i; pu[sz]=p;
}
if(1<x) {
++sz;
fact[sz]=x; pu[sz]=1;
}
}
int main()
{
int a,b,cont=1;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
f>>a>>b;
desc(a);
for(int i=1; i<=sz; ++i) pu[i]*=b;
for(int i=1; i<=sz; ++i) {
if(0!=fact[i]%REST-1) cont*=(((putere(fact[i],pu[i]+1)-1+REST)%REST)*putere((fact[i]%REST-1+REST)%REST,REST-2))%REST;
else cont*=((pu[i]+1)%REST);
cont%=REST;
}
g<<cont;
return 0;
}