Есть ответ 👍

Исполнитель вычислитель умеет исполнять только две команды: умножать на 2 и прибавлять 1. составьте для вычислителя наиболее короткую программу получение из числа 1 чисел : 5, 50 ,99 .

286
376
Посмотреть ответы 2

Ответы на вопрос:


{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

Популярно: Информатика