Логическая задача - Pascal
Формулировка задачи:
есть K людей и M монет. Найти: сколько получит последний человек монет, если первый взял себе самое большое количество монет но не более половины монет,второй взял самое большое количество монет с тех что остались но не более половины и так далее(каждый следующий брал себе максимально возможное количество монет с того что оставалось но не более половины с тех монет что оставались)
Решение задачи: «Логическая задача»
textual
Листинг программы
var k,m:integer;
begin
write('k = ');readln(k);
write('m = ');readln(m);
repeat
m:=m-(m div 2);
dec(k)
until k=1;
print(m)
end.
Объяснение кода листинга программы
- Объявляются переменные
kиmтипа integer. - Пользователю выводится строка
k =, после чего вводится значение переменнойk. - Пользователю выводится строка
m =, после чего вводится значение переменнойm. - Запускается цикл repeat-until, в котором выполняются следующие действия:
- Переменная
mуменьшается на целую часть от деленияmна 2. - Переменная
kуменьшается на 1. - Цикл выполняется до тех пор, пока значение переменной
kне станет равным 1.
- Переменная
- Выводится значение переменной
m. Таким образом, код принимает значенияkиmот пользователя, выполняет некоторые операции с переменными в цикле и выводит измененное значение переменнойmпосле завершения цикла.