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 – если не выполнил
Выходные данные: Выведите одно целое число — выигрыш или проигрыш Рона (выигрыш определяется положительным числом, а проигрыш – отрицательным).
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 сикля.