Pagini recente » Cod sursa (job #1245146) | Cod sursa (job #1271170) | Cod sursa (job #806540) | Cod sursa (job #50918) | Cod sursa (job #554207)
Cod sursa(job #554207)
#include <fstream>
#define REST 9901
using namespace std;
int fact[1<<17],pu[1<<17],sz;
int putere(int n, int p) {
int rez=n%p,put=1;
for(;p;) {
if(p&1) {
put*=(rez%REST);
put%=REST;
}
rez*=(rez%REST);
rez%=REST;
p>>=1;
}
return put;
}
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;
}