20. Ниже на четырёх языках записан алгоритм. Получив на входе число x, этот алгоритм печатает два числа: a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 21.
Бейсик | Паскаль |
DIM X, A, B AS INTEGER INPUT X A=0: B=1 WHILE X > 0 A = A+1 B = B*(X MOD 10) X = X \ 10 WEND PRINT A PRINT B |
var x, a, b: integer begin readin(x) ; a:=0 ; b:=1 ; while x>0 do begin a:=a+1; b:=b*(x mod 10) ; x:= x div 10 end ; writeln (a) ; write (b) ; end. |
Си | Алгоритмический |
#include<stdio.h> void main () { int x, a, b ; scanf ("%d", &x) ; a=0 ; b=1 ; while (x>0 0 { a=a+1 ; b=b*(x%10) ; x= x/10 ; } printf ("%d\n%d", a, b) ; } |
алг нач цел x, a, b ввод x a:=0 ; b:=1 нц пока x>0 a:=a+1 b:=b*mod (x, 10) x:=div (x,10) кц вывод a, нс, b кон |
Ответ: 73
Решение:
Переменная a отвечает (накапливается) за количество цифр в десятичной записи числа x, а переменная b равна произведению цифр десятичного числа. Так как a=2, то цифр в числе две. b = 21 значит 3*7 либо 7*3. Итак, нам необходимо найти наибольшее число, а это 73.