Pagini recente » Cod sursa (job #3290880) | Cod sursa (job #3264590) | Cod sursa (job #92395) | Cod sursa (job #1334181) | Cod sursa (job #1303036)
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<bitset>
#include<math.h>
#define nmax 25000010
using namespace std;
bitset<nmax> ciur;
int inm(int b,int e)
{
int r=1,m=9901;
while(e>0)
{
if(e%2==1)
{
r=(r*b)%m;
}
e=e/2;
b=(b*b)%m;
}
return r;
}
int main()
{
ifstream si;
si.open("sumdiv.in");
FILE* so=fopen("sumdiv.out","w");
int n,p;
si>>n>>p;
int x;
int c;
int s=1,z=n/2;
if(n%2==0)
{
x=1;
c=0;
while(n%2==0)
{
++c;
x=(x*2)%9901;
n=n/2;
}
s=(s*(inm(x,p)*2-1))%9901;
}
int i,j;
for(i=3;i<=z;i=i+2)
{
if(ciur[i]==0)
{
for(j=3;i*j<=z;j=j+2)
{
ciur[i*j]=1;
}
if(n%i==0)
{
c=0;
x=1;
while(n%i==0)
{
++c;
x=(x*i)%9901;
n=n/i;
}
s=(s*(inm(x,p)*i-1)/(i-1))%9901;
}
}
}
if(n!=1)
{
s=((inm(n,p)*n-1)/(n-1))%9901;
}
fprintf(so,"%i\n",s);
}