Pagini recente » Cod sursa (job #695024) | Cod sursa (job #1651806) | Cod sursa (job #2172941) | Cod sursa (job #1134362) | Cod sursa (job #169129)
Cod sursa(job #169129)
#include <iostream.h>
#include <fstream.h>
#include <math.h>
int main()
{
fstream f1("sandokan.in",ios::in);
fstream f2("sandokan.out",ios::out);
int n,k,rest,i,max,min,x,d;
int prime[5005];
long val,kfc,nfc,restfc;
f1 >> n;
f1 >> k;
val=0;
min=n%(k-1);
if (min==0) min=k-1;
min--; n--;
if (min>(n-min)) min=n-min;
max=n-min;
//cout << min <<" "<< max <<" "<< n;
//getchar();
for (i=2;i<=5000;i++) prime[i]=0;
//for (i=2; i<=1000; i++) if (prime[i]!=0) cout << i <<" la puterea "<<prime[i]<<"\n"; getchar();
for (i=max+1;i<=n;i++) {
x=i;
d=1;
while (x>1) {
d++;
while (x%d==0) {
prime[d]++;
x=x/d;
}
}
}
for (i=1;i<=min;i++) {
x=i;
d=1;
while (x>1) {
d++;
while (x%d==0) {
prime[d]--;
x=x/d;
}
}
}
// for (i=2; i<=1000; i++) if (prime[i]!=0) cout << i <<" la puterea "<<prime[i]<<"\n"; getchar();
val=1;
for (i=5000;i>=2;i--)
if (prime[i]!=0)
for (k=1;k<=prime[i];k++)
val=val*i%2000003;
//cout << val;
//getchar();
/*
//varianta veche
val=0;
rest=n%(k-1);
if (rest==0) rest=k-1;
rest--;
n--;
k=n-rest;
kfc=1;
nfc=1;
restfc=1;
for (i=1;i<=rest;i++) restfc=restfc*i%2000003;
for (i=1;i<=k;i++) kfc=kfc*i%2000003;
nfc=kfc;
for (i=k+1;i<=n;i++) nfc=nfc*i%2000003;
val=(nfc/kfc)/restfc%2000003;
cout << n <<" "<< nfc <<"\n"<< rest <<" "<< restfc <<"\n"<< k <<" "<< kfc <<"\n"<< val;
getchar();
*/
f2 << val;
f1.close();
f2.close();
return 0;
}