tsigankova2018
?>

Паскаль. исполнитель “раздвоитель” преобразует натуральные числа. у него есть две команды: “вычесть 1” и “разделить на 2”, первая команда уменьшает число на 1, вторая команда уменьшает число в два раза, если оно чётное, иначе происходит ошибка.

Информатика

Ответы

saa002
Var a, b : integer; begin readln(a, b); while a < > b do begin if (a > = b * 2) and (a mod 2 = 0) then begin a : = round(a / 2); writeln(': 2'); end else begin a : = a - 1; writeln(-1); end end; end.
Sergei_sergei

program t;

var n, i, a, b, c, d, k, m: integer; x1, x2, x3, y1, y2, y3: array[1..10000] of integer; f1, f2: text;

function icl(x, y: integer): boolean;

var i: integer;

begin

icl: =false;

for i: =1 to n do

begin

  if (x> =x1[i]) and (y> =y1[i]) and (x< =x2[i]) and (y< =y2[i]) then

  begin

  icl: =true;

  break

  end

end

end;

procedure re(st, fn: integer);

var nst, nfn, i, j, jj, xx, yy: integer; eq, ff: boolean;

begin

m: =m+1;

nst: =k+1;

ff: =false;

for i: =st to fn do

begin

  for j: =0 to 11 do

  begin

  if j mod 3=0 then continue;

  xx: =x3[i]+trunc(cos(j*pi/6)*3);

  yy: =y3[i]+trunc(sin(j*pi/6)*3);

  if not icl(xx, yy) then continue;

  eq: =false;

  for jj: =1 to k do if (xx=x3[jj]) and (yy=y3[jj]) then

  begin

    eq: =true;

    break

  end;

  if eq then continue;

  if (xx=c) and (yy=d) then

  begin

    ff: =true;

    break

  end;

  k: =k+1;

  x3[k]: =xx;

  y3[k]: =yy;

  end;

  if ff then break;

end;

if ff then exit;

nfn: =k;

if nst> nfn then

begin

  m: =-1;

  exit

end;

re(nst, nfn)

end;

begin

assign(f1, 'horse.in');

reset(f1);

assign(f2, 'horse.out');

rewrite(f2);

readln(f1, n);

for i: =1 to n do readln(f1, x1[i], y1[i], x2[i], y2[i]);

readln(f1, a, b);

readln(f1, c, d);

k: =1;

x3[1]: =a;

y3[1]: =b;

m: =0;

re(1, 1);

writeln(f2, m);

close(f1);

close(f2)

end.

Иванова

алгоритм печатает сначала l, потом m. по программе понятно, что l это количество раз, когда число не кратно 10 (каждый раз число делится на 10), а m - общее количество цифр. понятно, что раз число должно быть наименьшее, а всего 8 цифр, значит может быть как минимум 4 нуля. больше нулей быть не может, т.к. если в числе есть значимый ноль, то при делении он будет давать кратность десяти. 4 цифры уже есть, осталось подобрать 4 цифры, которые в числе при делении его на 10 не будут давать остаток 0. это любые цифры от 1 до 9, но так как число минимальное, значит это цифры "1". получается, 11110000. переставляем цифры так, чтобы число было минимальное и получается 10000111.

ответ: 10000111

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Паскаль. исполнитель “раздвоитель” преобразует натуральные числа. у него есть две команды: “вычесть 1” и “разделить на 2”, первая команда уменьшает число на 1, вторая команда уменьшает число в два раза, если оно чётное, иначе происходит ошибка.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

VSpivak3122
зырянов_Юрьевна378
MS-DOS. ответить на вопросы
zubritskiy550
adminaa
podenkovaev314
Rustamov741
megaromeo
Максим
krisrespect
Margarita
Виктория1690
Владислав1246
Маркина Ворошилина
lsuvorova1987
yurogov61