Pagini recente » Cod sursa (job #2483453) | Cod sursa (job #267827) | Cod sursa (job #2478486) | Cod sursa (job #1072407) | Cod sursa (job #1466134)
#include <stdio.h>
int r, d, total[6];
int count, delta, i, j, aux, mult;
int main()
{
FILE *in, *out;
in = fopen("pascal.in", "r");
out = fopen("pascal.out", "w");
fscanf(in, "%d %d", &r, &d);
mult = 2;
for (i = 1; i <= r/2; i++)
{
if (d == 2 || d == 4 || d == 6)
{
for (j = r-i+1; (j > 0) && (j%2 == 0); j >>= 1, total[2]++);
for (j = i; (j > 0) && (j%2 == 0); j >>= 1, total[2]--);
}
if (d == 3 || d == 6)
{
for (j = r-i+1; (j > 0) && (j%3 == 0); j /= 3, total[3]++);
for (j = i; (j > 0) && (j%3 == 0); j /= 3, total[3]--);
}
if (d == 5)
{
for (j = r-i+1; (j > 0) && (j%5 == 0); j /= 5, total[5]++);
for (j = i; (j > 0) && (j%5 == 0); j /= 5, total[5]--);
}
delta = 0;
if (d == 2)
delta = mult*(total[2] ? 1 : 0);
else if (d == 3)
delta = mult*(total[3] ? 1 : 0);
else if (d == 4)
delta = mult*(total[2] >= 2 ? 1 : 0);
else if (d == 5)
delta = mult*(total[5] ? 1 : 0);
else if (d == 6)
delta = mult*(total[2] && total[3] ? 1 : 0);
count += delta;
}
if (r > 2 && r%2 == 0)
count -= delta/2;
fprintf(out, "%d\n", count);
fclose(in);
fclose(out);
return 0;
}