C++ ЗАДАЧА НА ПРОГРАММИРОВАНИЕ. В мире волшебников серебряный сикль равняется 29 бронзовым кнатам, а 17 сиклей равны 1 золотому галеону. В мире маглов галеон равен примерно 5 фунтам. Однако курс обмена может меняться. Рон старался учить заклинания, но не всегда у него получалось то, что он хотел. Недавно он нашел новую игру «Казино волшебников». В этом казино играют на виртуальные сикли, а каждый раунд игры состоит в применении того или иного заклинания. Перед началом игры у Рона ноль сиклей на счету, но программа в любой момент предоставляет ему неограниченный кредит.

Перед началом каждого раунда программа сообщает, на какую тему будет очередное волшебное задание и Рон делает ставку на то, что он справится с заданием. В самом начале игры Рон всегда делает ставку в 1 сикль. Если Рон выполняет задание правильно, то он выигрывает раунд и ставка плюсуется к его счету. Если у него ничего не получилось, то он проигрывает, и ставка вычитается из его счета. Рон очень азартный, поэтому после проигрыша всегда увеличивает ставку в 2 раза. Однако после выигрыша, дабы не вспугнуть удачу, Рон всегда снижает ставку до 1 сикля. Наконец, одолев очередное задание, и выиграв этот раунд, Рон решает закончить игру.

Например, пусть Рон правильно выполнил первое задание (выиграл начальную ставку в 1 сикль, поставил на следующий раунд 1 сикль), затем не выполнил второе задание (проиграл 1 сикль и удвоил ставку), не справился с третьим заданием (проиграл 2 сикля и снова удвоил ставку), но четвертое задание ему все-таки удалось выполнить (выиграл 4 сикля, сбросил ставку на 1 сикль). Затем он правильно выполняет и пятое задание (выиграл 1 сикль) и заканчивает игру. Итого на его счету после игры: 1 – 1 – 2 + 4 + 1 = 3 сикля.

Требуется написать программу, которая по имеющейся записи хронологии игры определяет, какое количество сиклей выиграл или проиграл Рон.

Входные данные: Первая строка содержит целое число N (0 < N ≤ 2000) — количество заданий, которое выполнил Рон. В следующих N строках располагаются числа 0 или 1 (по одному числу в строке): 1, если Рон выполнил очередное задание, и 0 – если не выполнил
Выходные данные: Выведите одно целое число — выигрыш или проигрыш Рона (выигрыш определяется положительным числом, а проигрыш – отрицательным).

НикаКотикТян НикаКотикТян    2   21.04.2021 20:05    18

Ответы
Qween123452003 Qween123452003  07.01.2024 19:17
Чтобы решить эту задачу, мы можем использовать простой подход. Давайте пройдемся в цикле по списку результатов выполнения заданий и будем отслеживать текущую ставку и общий выигрыш/проигрыш.

1. Создайте переменные "ставка" и "выигрыш" и задайте им начальные значения 1 и 0 соответственно.

2. Считайте количество заданий N.

3. В цикле от 1 до N считывайте результаты выполнения заданий.

4. Если выполнилось очередное задание, увеличьте выигрыш на текущую ставку и сбросьте ставку до 1.

5. Если задание не выполнено, увеличьте ставку вдвое.

6. По окончании цикла выведите выигрыш/проигрыш Рона.

Код на C++ будет выглядеть следующим образом:

```cpp
#include

int main() {
int N, result;
int bet = 1;
int winnings = 0;

std::cin >> N;

for (int i = 0; i < N; i++) {
std::cin >> result;

if (result == 1) {
winnings += bet;
bet = 1;
} else {
bet *= 2;
}
}

std::cout << winnings - bet << std::endl;

return 0;
}
```

Данный код считывает количество заданий N, а затем в цикле принимает результаты выполнения заданий. После этого рассчитывает выигрыш/проигрыш Рона и выводит его.

Пример ввода:
```
5
1
0
0
1
1
```

Пример вывода:
```
3
```

В этом примере Рон выиграл 3 сикля.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика