Отримання знань
дистанційна підтримка освіти школярів
Пакеты
Входные данные
Выходные данные
Пример входных данных
Пример выходных данных
Анализ условия и обсуждение идеи решения
Пример решения на С++:
#include < stdio.h >
int a[7];
int max(int a, int b)
{
if (a > b) return a; else return b;
}
int min(int a, int b)
{
if (a > b) return b; else return a;
}
int main()
{
int i,j,k;
int count;
scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
while (a[1] > 0 || a[2] > 0 || a[3] > 0 || a[4] > 0 || a[5] > 0 || a[6] > 0)
{
count = 0;
for (k = 6; k >= 1; k--)
{
if (!a[k]) continue;
if (k == 6)
{
count += a[k];
continue;
} else if (k == 5)
{
count += a[k];
j = min(a[k]*11,a[1]);
a[1] -= j;
continue;
} else if (k == 4)
{
count += a[k];
j = min(a[k]*5,a[2]);
a[2] -= j;
if (!a[2])
{
j = a[k]*5 - j;
i = min(j*4,a[1]);
a[1] -= i;
}
continue;
} else if ( k == 3)
{
count += a[k] / 4;
j = a[k] % 4;
if ( j == 1)
{
i = min(5,a[2]);
a[2] -= i;
a[1] -= min(27 - 4 * i,a[1]);
count++;
} else if (j == 2)
{
i = min(3,a[2]);
a[2] -= i;
a[1] -= min(18 - 4 * i,a[1]);
count++;
} else if (j == 3)
{
i = min(1,a[2]);
a[2] -= i;
a[1] -= min(9 - 4 * i,a[1]);
count++;
}
continue;
} else if ( k == 2)
{
count += a[k] / 9;
j = a[k] % 9;
if (j)
{
a[1] -= min(36 - 4 * j,a[1]);
count++;
}
continue;
} else
{
count += a[k] / 36;
j = a[k] % 36;
if (j) count++;
continue;
}
}
printf("%d\n",count);
scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
}
return 0;
}
Попередня | Зміст | Наступна |
В системі:
гості - (1); користувачі -
(0)