Автомат обрабатывает натуральное число N по следующему алгоритму: 1. Строится двоичная запись числа N.
2. Удаляется первая слева единица и все следующие непосредственно за ней нули. Если после этого в числе не остаётся цифр, результат этого действия считается равным нулю.
3. Полученное число переводится в десятичную запись.
4. Новое число вычитается из исходного, полученная разность выводится на экран.
Пример. Дано число N = 11. Алгоритм работает следующим образом.
1. Двоичная запись числа N: 1011.
2. Удаляется первая единица и следующий за ней ноль: 11.
3. Десятичное значение полученного числа 3.
4. На экран выводится число 11 – 3 = 8.
Сколько разных значений будет показано на экране автомата при последовательном вводе всех натуральных чисел от 10 до 1000?
НУЖНО РЕШЕНИЕ С ПРОГРАММЫ ПАСКАЛЬ
program Program1;
var i, j, n, k: integer;
var result: real;
var array1: array [1..255] of real;
begin
result := 0;
write('Введите значение N (не более 255): ');
readln(n);
for i := 1 to n do
begin
write('Введите значение ', i, ' элемента массива: ');
readln(array1[i]);
end;
begin
writeln('Массив, размером - ', n, ' элементов(а):');
for i := 1 to n do write(array1[i], ' ');
writeln;
end;
for i:=1 to n do
begin
k := 0;
for j:=1 to n do
if array1[i] = array1[j] then k := k + 1;
if k = 1 then result := result + array1[i];
end;
writeln('Сумма уникальных элементов массива = ', result);
end.
ты делал сравнение a с b. у тебя вышло такое: a не равно b.
во втором условии у тебя вообще не условие, это действие, ты a / 2. Чтоб проверить кратность числа нужно написать это: число % кратно_какому_числу == 0.
при print ты не сделал табуляцию. Перед print надо нажать tab. Еще ты в print вместо того чтоб написать просто сумму сделал проверку на равность a и a + b (это в случае с первым print). Нужно было написать просто print(a + b) и print(a * b)
Вот готовый код:
a = int(input("Введите a: "))
b = int(input("Введите b: "))
if a != 10 and b != 10 and a % 2 == 0:
print(a + b)
else:
print(a * b)