35 !
ниже записана программа. получив на вход число , эта программа печатает два числа, и . укажите максимальное и минимальное числа, при вводе которых алгоритм печатает сначала 3, а потом 7.
цел x, l, m
ввод x
l: =0; m: =0
нц пока x > 0
l: = l + 1
если mod(x,2) = 1 то
m: = m + div(mod(x,10),2)
все
x: = div(x,10)
кц
вывод l, нс
вывод m, нс
var x, l, m: integer;
begin
readln(x);
l: =0; m: =0;
while x > 0 do begin
l: = l + 1;
if x mod 2 = 1 then
m: = m +
(x mod 10) div 2;
x: = x div 10;
end;
writeln(l); write(m);
end.
1. Число будет иметь минимальное значение, если в нем будет минимально возможное количество значащих разрядов. Таких циклическх сдвигов в данном случае возможно 2 (запишем их друг под другом):
0011001111 - циклический сдвиг на 4 разряда влево;
0011110011 - циклический сдвиг на 8 разрядов влево;
2. При равном количестве разрядов меньшим будет то число, у которого при просмотре разрядов слева направо встретится ноль, в то время как у второго в этом же разряде будет единица (это место выделено):
11001111 - это число меньшее из двух.
11110011
ответ: 11001111₂ = 207₁₀
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0)*(0+0) + 1*0
будет 0