Матч
315, Лепестки Роз (RosePetals)
Дивизион 2,
Уровень 1
Бросаются пять игральных кубиков,
стороны которых пронумерованы числами от 1 до 6:
В задаче следует подсчитать
суммарное количество точек вокруг центральной точки каждой выпавшей грани. Это
напоминает подсчет лепестков роз. Если грань не имеет центральной точки (2, 4,
6), то число лепестков равно нулю. Остальные три грани 1, 3 и 5 имеют центральную
точку и количество их лепестков соответственно равно 0, 2 и 4.
Класс: RosePetals
Метод: int getScore(vector<int> dice)
Ограничения:
dice содержит 5 чисел от 1 до 6.
Вход. Массив dice, описывающий положение
игральных кубиков после броска.
Выход. Количество лепестков в выпавшей конфигурации.
Пример входа
dice |
{1, 2, 3, 2, 1} |
{4, 4, 5, 6, 5} |
{2, 2, 2, 2, 2} |
Пример выхода
2
8
0
РЕШЕНИЕ
элементарные вычисления
Заведем массив petals, в котором
petals[i] содержит количество
лепестков грани с числом i. Проходим
по массиву dice и суммируем количество лепестков, грань с числом dice[i] содержит petals[dice[i]] лепестков.
ПРОГРАММА
#include <cstdio>
#include <vector>
using namespace std;
class RosePetals
{
public:
int getScore(vector<int>
dice)
{
int i, res, petals[] = {0,0,0,2,0,4,0};
for(res = i = 0; i < 5; i++)
res += petals[dice[i]];
return res;
}
};