Pagini recente » Istoria paginii runda/rf_3 | Cod sursa (job #1685352) | Cod sursa (job #964589) | Cod sursa (job #86302) | Cod sursa (job #1067926)
#include <stdio.h>
FILE*f = fopen("pascal.in", "r");
FILE*g = fopen("pascal.out", "w");
int v[6][5000005];
int r[6];
int R, d;
int fact(int a, int b){
int z = 0;
while (a%b == 0){
a /= b;
z++;
}
return z;
}
void rezolva(int a, int b)
{
for (register int i = 1; i <= R + 1; i++)
{
v[a][i] = v[a][i - 1] + fact(i, a);
v[b][i] = v[b][i - 1] + fact(i, b);
}
int i, nr = 0;
int n = (R + 1) >> 1;
for (i = 1; i < n; i++)
if (v[a][R] - v[a][R - i] - v[a][i] >= r[a]&&v[b][R] - v[b][R - i] - v[b][i] >= r[b])
nr++;
nr *= 2;
if (R % 2 == 0)
if (v[a][R] - v[a][R - i] - v[a][i] >= r[a]&&v[b][R] - v[b][R - i] - v[b][i] >= r[b])
nr++;
fprintf(g, "%d", nr);
}
int main() {
fscanf(f, "%d%d", &R, &d);
if (d == 2)
{
r[2] = 1;
rezolva(2, 5);
}
else if (d == 3)
{
r[3] = 1;
rezolva(3, 5);
}
else if (d == 4)
{
r[2] = 2;
rezolva(2, 5);
}
else if (d == 5)
{
r[5] = 1;
rezolva(3, 5);
}
else{
r[2] = 1;
r[3] = 1;
rezolva(2, 3);
}
fclose(f);
fclose(g);
return 0;
}