{ У Васи в мешке было N орехов. Каждый день он брал половину для
себя и своих друзей. Если число орехов было нечетным, то
он откладывал один орех в сторону, а остальные делил пополам,
причем отложенный орех опять возвращал в мешок. Сколько орехов
останется в мешке через K дней ?
╔══════════════╤════╤═════╤══════╤═════╤═══════╤═════════╗
║ N │ 16 │ 16 │ 9 │ 32 │ 100 │ 100 ║
╟──────────────┼────┼─────┼──────┼─────┼───────┼─────────╢
║ Кол-во дней │ 3 │ 4 │ 3 │ 10 │ 5 │ 100 ║
╟──────────────┼────┼─────┼──────┼─────┼───────┼─────────╢
║ Остаток │ 2 │ 1 │ 2 │ 1 │ 4 │ 1 ║
╚══════════════╧════╧═════╧══════╧═════╧═══════╧═════════╝
}
program 3;
uses crt;
var
i , s, n, dni, a : Integer;
begin
ClrScr;
Write('Введите кол-во орехов: ');
ReadLn(n);
Write('Введите кол-во дней : ');
ReadLn(dni);
s := 0;
a := 0;
if dni > n then
begin
TextColor(Red);
GotoXY(15,5);
WriteLn('"Кол-во дней не должно превышать кол-во орехов.');
GotoXY(15,6);
WriteLn(' Попробуйте перезапустить программу и повторить снова."')
end
else
begin
for i := 1 to dni do
begin
if a mod n = 0 then
begin
s := n div 2;
n := n - s;
end
else
begin
a := n - 1;
s := a div 2;
n := n - s + 1
end
end;
WriteLn('Остаток: ', n, ' орех(ов).')
end;
WriteLn;
Write('Press Enter');
ReadLn
end.