begin Write('Введите целое четырехзначное число: '); Readln(n); n := Abs(n); { вдруг отрицательное введут? } p := 1; for i := 1 to 4 do begin m := n mod 10; n := n div 10; p := p * m end; Writeln('Произведение цифр в числе равно ', p); end.
Тестовое решение:
Введите целое четырехзначное число: 1234 Произведение цифр в числе равно 24
1) Результатом работы должно быть число больше, чем 43, но при этом быть минимальным. Т.е в двоичной с.с это скорее всего 6-значное число, т.к семизначное даст нам результат больше или равный 64. 2) Так как над начальной записью действия производятся дважды, то чтобы получилось 6-значное число в итоге работы программы нужно для начала взять 4-значное. Возьмем (для пробы) 1000. После выполнения алгоритмя число станет 100010. Первый раз к числу прибавится 1, т.е остаток будет 1, второй раз к числу прибавится 0. При переводе этого числа в 10-ю с.с получим 33. МАЛО. 3) Рассмотрим несколько вариантов таким же образом и остановимся, наконец, на том, который будет удовлетворять работе алгоритма. 4) Это 1011. После выполнения первого построения остаток будет 1, после второго добавится 0. В результате получится 101110(2)= 32+8+4+2=46(10)
1. Отметим, что приписывание к двоичному числу двух младших разрядов предполагает предварительный сдвиг этого числа влево на два разряда (что равносильно умножению на 2²=4), а затем установку двух младших разрядов в соответствующие приписываемым битам значения. Следовательно, можно записать, что 4N+a>43, где a - число, образованное приписываемыми справа битами, которое не может превышать 11(2)=3(10) 4N+[0..3]≥44, откуда минимальное N=11 Теперь запишем N=11 в двоичной системе и применим к нему заданный алгоритм. N=1011(2), число единиц три, нечетное, приписываем 1, получая 10111. Теперь число единиц четное, приписываем 0 и получаем R=101110(2). В десятичной записи ему соответствует число 46. ответ: 46
p: longint;
k, m, n, i: integer;
begin
Write('Введите целое четырехзначное число: ');
Readln(n);
n := Abs(n); { вдруг отрицательное введут? }
p := 1;
for i := 1 to 4 do
begin
m := n mod 10;
n := n div 10;
p := p * m
end;
Writeln('Произведение цифр в числе равно ', p);
end.
Тестовое решение:
Введите целое четырехзначное число: 1234
Произведение цифр в числе равно 24