Pagini recente » Cod sursa (job #1656971) | Cod sursa (job #2483398) | Cod sursa (job #1656988) | Cod sursa (job #2085227) | Cod sursa (job #147951)
Cod sursa(job #147951)
#include <stdio.h>
#include <stdlib.h>
#define DIM 5000001
int v[DIM],w[DIM];
int n,d,d1,d2,i,j,k,nr,dd,ddw,r,t;
int main(){
FILE *f = fopen("pascal.in","r");
fscanf(f,"%d %d",&n,&d);
fclose(f);
if ((d==2)||(d==3)||(d==5)){
for (i=1;i<=n;i++) {
j=i;
k=0;
while (j%d==0) {
k++;
j/=d;
}
v[i]=k+v[i-1];
}
for (i=0;i<=(n+1)/2-1;i++) {
dd = v[n]-v[i]-v[n-i];
if (dd>0) nr+=2;
}
if (n%2==0) {
i=n/2;
dd = v[n]-v[i]-v[n-i];
if (dd>0) nr+=1;
}
} else if (d==4) {
d=2;
for (i=1;i<=n;i++) {
j=i;
k=0;
while (j%d==0) {
k++;
j/=d;
}
v[i]=k+v[i-1];
}
for (i=0;i<=(n+1)/2-1;i++) {
t = v[i]+v[n-i];
// if (t%2==1) t--;
r = v[n];
// if (r%2==1) r--;
dd = r-t;
if (dd>1) nr+=2;
}
if (n%2==0) {
i=n/2;
t = v[i]+v[n-i];
// if (t%2==1) t--;
r = v[n];
// if (r%2==1) r--;
dd = r-t;
if (dd>1) nr+=1;
}
} else {
d1=2;d2=3;
for (i=1;i<=n;i++) {
j=i;
k=0;
while (j%d1==0) {
k++;
j/=d1;
}
v[i]=k+v[i-1];
j=i;
k=0;
while (j%d2==0) {
k++;
j/=d2;
}
w[i]=k+w[i-1];
}
for (i=0;i<=(n+1)/2-1;i++) {
dd = v[n]-v[i]-v[n-i];
ddw = w[n]-w[i]-w[n-i];
if ((dd>0)&&(ddw>0)) nr+=2;
}
if (n%2==0) {
i=n/2;
dd = v[n]-v[i]-v[n-i];
ddw = w[n]-w[i]-w[n-i];
if ((dd>0)&&(ddw>0)) nr+=1;
}
}
FILE *g = fopen("pascal.out","w");
fprintf(g,"%d",nr);
fclose(g);
return 0;
}