У Васи в мешке было N орехов. Каждый день он брал половину для себя и своих друзей. Если число орехов было нечетным, то он откладывал один орех в сторону, а остальные делил пополам, причем отложенный орех опять возвращал в мешок. Сколько орехов останется в мешке через K дней ? — Pascal(Паскаль)

   {  У Васи в мешке было 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.

Leave a Comment

1 + 7 =