Pagini recente » Cod sursa (job #2149559) | Cod sursa (job #2720883) | Istoria paginii runda/oni_mixed | Istoria paginii utilizator/costinoana | Cod sursa (job #1067940)
#include <stdio.h>
FILE*f = fopen("pascal.in", "r");
FILE*g = fopen("pascal.out", "w");
int v2[5000005], v3[5000005], v5[5000005];
int fact(int a, int b){
int z = 0;
while (a%b == 0){
a /= b;
z++;
}
return z;
}
int main() {
int r, d;
fscanf(f, "%d%d", &r, &d);
if (d <6)
{
int r2 = 1;
if (d == 4)
{
r2 = 2;
d = 2;
}
for (register int i = 1; i <= r + 1; i++)
{
v2[i] = v2[i - 1] + fact(i, d);
}
int i, nr = 0;
int n = (r + 1) >> 1;
for (i = 1; i < n; i++)
if (v2[r] - v2[r - i] - v2[i] >= r2)
nr++;
nr <<= 1;
if (r % 2 == 0)
if (v2[r] - v2[r - i] - v2[i] >= r2)
nr++;
fprintf(g, "%d", nr);
}
else
{
for (register int i = 1; i <= r + 1; i++){
v2[i] = v2[i - 1] + fact(i, 2);
v3[i] = v3[i - 1] + fact(i, 3);
}
int r2 = 0, r3 = 0;
r2 = 1;
r3 = 1;
int i, nr = 0;
int n = (r + 1) >> 1;
for (i = 1; i < n; i++)
if (v2[r] - v2[r - i] - v2[i] >= r2&&v3[r] - v3[r - i] - v3[i] >= r3)
nr++;
nr <<= 1;
if (r % 2 == 0)
if (v2[r] - v2[r - i] - v2[i] >= r2&&v3[r] - v3[r - i] - v3[i] >= r3)
nr++;
fprintf(g, "%d", nr);
}
fclose(f);
fclose(g);
return 0;
}