Pagini recente » Cod sursa (job #2760503) | Cod sursa (job #76890) | Cod sursa (job #39468) | Cod sursa (job #1996351) | Cod sursa (job #1805936)
#include <cstdio>
const int MAX_N = 5000000;
struct codeFactory {
int pr[6];
} prec[1+MAX_N], fi, fj, fij, rez;
void upd(int r, int pr) {
int p;
p = pr;
while(p <= r) {
for(int i = p; i <= r; i = i + p)
prec[i].pr[pr]++;
p = p * pr;
}
}
int main() {
int r, d, nr;
FILE *fin = fopen("pascal.in", "r");
fscanf(fin, "%d%d", &r, &d);
fclose(fin);
if(d % 2 == 0)
upd(r, 2);
if(d % 3 == 0)
upd(r, 3);
if(d % 5 == 0)
upd(r, 5);
for(int i = 1; i <= r; ++i) {
prec[i].pr[2] += prec[i - 1].pr[2];
prec[i].pr[3] += prec[i - 1].pr[3];
prec[i].pr[5] += prec[i - 1].pr[5];
}
bool ok;
fi = prec[r];
nr = 0;
for(int j = 0; j <= r; ++j) {
fj = prec[j];
fij = prec[r - j];
rez.pr[2] = fi.pr[2] - fj.pr[2] - fij.pr[2];
rez.pr[3] = fi.pr[3] - fj.pr[3] - fij.pr[3];
rez.pr[5] = fi.pr[5] - fj.pr[5] - fij.pr[5];
ok = true;
if(d % 2 == 0 && rez.pr[2] == 0)
ok = false;
if(d % 3 == 0 && rez.pr[3] == 0)
ok = false;
if(d % 5 == 0 && rez.pr[5] == 0)
ok = false;
if(d % 4 == 0 && rez.pr[2] <= 1)
ok = false;
if(ok)
nr++;
}
FILE *fout = fopen("pascal.out", "w");
fprintf(fout, "%d", nr);
fclose(fout);
return 0;
}