Исполнитель вычислитель умеет исполнять только две команды: умножать на 2 и прибавлять 1. составьте для вычислителя наиболее короткую программу получение из числа 1 чисел : 5, 50 ,99 .
286
376
Ответы на вопрос:
{0 - умножить на 2; 1 - прибавить 1} 5: 001 {1 - 2 - 4 - 5} 50: 0100010 {1 - 2 - 3 - 6 - 12 - 24 - 25 - 50} 99: 010000101 {1 - 2 - 3 - 6 - 12 - 24 - 48 - 49 - 98 - 99} в данном случае достаточно просто идти с конца. скажем, если есть число 99, очевидно, последней командой было "прибавить 1". далее, 98 - может быть получено умножением на 2, и следует выбирать именно эту команду - программа точно не будет превосходить по размеру вариант, где последней операцией является сложение. например, 98 - 49 - 48 короче, чем 98 - 97 - 96 - 48
Объяснение:
program XandY;
const
rndlim=50;
var
x, y : integer;
begin
x:=random(rndlim);
y:=random(rndlim);
Writeln('x=',x,' y=', y);
Writeln('x+y = ',x+y);
Writeln('x-y = ',x-y);
Writeln('x*y = ',x*y);
Writeln('x^2 + y^2 = ',sqr(x)+sqr(y));
end.
Запуск:
Free Pascal Compiler version 2.6.2-8 [2014/01/22] for x86_64
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling main.pas
Linking a.out
16 lines compiled, 0.2 sec
x=27 y=29
x+y = 56
x-y = -2
x*y = 783
x^2 + y^2 = 1570
Популярно: Информатика
-
Патрисия200028.07.2020 20:43
-
kseniatrof26.08.2021 16:56
-
mvamz04.11.2020 13:44
-
ВЕSТ02.03.2023 05:12
-
all27126.12.2022 01:05
-
ebotalov31.12.2022 18:28
-
денисвеликий02.06.2023 09:09
-
Abrak2409.06.2021 01:44
-
24301322.04.2021 07:54
-
влщчцдыо24.12.2021 14:02