Отримання знань

дистанційна підтримка освіти школярів


Пакеты
http://acm.pku.edu.cn/JudgeOnline/problem?id=1017

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на С++:

#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;
}

 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)