Pagini recente » Cod sursa (job #2212307) | Cod sursa (job #2610891) | Cod sursa (job #749666) | Cod sursa (job #1448791) | Cod sursa (job #351175)
Cod sursa(job #351175)
#include <stdio.h>
#define DIM 5000003
int v[DIM],w[DIM];
int n,i,j,d,x,y,sol;
int main() {
FILE *f = fopen("pascal.in","r");
FILE *g = fopen("pascal.out","w");
fscanf(f,"%d%d",&n,&d);
if (d==2 || d==3 || d==5) {
for (i=1; i<=n; i++) {
j = i;
while (j%d==0) {
v[i]++;
j /= d;
}
v[i] += v[i-1];
}
for (i=1; i<=(n-1)/2; i++) {
x = v[n]-v[i]-v[n-i];
if (x>0)
sol++;
}
sol *= 2;
if (n%2==0) {
j = n/2;
x = v[n]-v[j]-v[n-j];
if (x>0)
sol++;
}
}
else
if (d==4) {
d = 2;
for (i=1; i<=n; i++) {
j = i;
while (j%d==0) {
v[i]++;
j /= d;
}
v[i] += v[i-1];
}
for (i=1; i<=(n-1)/2; i++) {
x = v[n]-v[i]-v[n-i];
if (x>1)
sol++;
}
sol *= 2;
if (n%2==0) {
j = n/2;
x = v[n]-v[j]-v[n-j];
if (x>1)
sol++;
}
}
else {
d = 2;
for (i=1; i<=n; i++) {
j = i;
while (j%d==0) {
v[i]++;
j /= d;
}
v[i] += v[i-1];
}
d = 3;
for (i=1; i<=n; i++) {
j = i;
while (j%d==0) {
w[i]++;
j /= d;
}
w[i] += w[i-1];
}
for (i=1; i<=(n-1)/2; i++) {
x = v[n]-v[i]-v[n-i];
y = w[n]-w[i]-w[n-i];
if (x>0 && y>0)
sol++;
}
sol *= 2;
if (n%2==0) {
j = n/2;
x = v[n]-v[j]-v[n-j];
y = w[n]-w[j]-w[n-j];
if (x>0)
sol++;
}
}
fprintf(g,"%d",sol);
fclose(f);
fclose(g);
return 0;
}