var
a, b, n, i, j, t: integer;
s, sn: string;
begin
write ('введите начало отрезка: ');
readln (a);
write ('введите окончание отрезка: ');
readln (b);
n : = 0;
for i : = a to b do begin
s : = inttostr (i);
t : = 1;
for j : = 1 to length (s) do
t : = t * strtoint (s[j]);
if t > n then begin
sn : = s;
n : = t;
end;
end;
writeln ('число с наибольшим произведением цифр: ' + sn);
end;
На бумаге сорри не получится, но постараюсь досконально объяснить:
1) 379 в 10 системе счисления сначала переводим в 2 систему счисления: мы число 379 делим на 2 до того момента, когда выражение будет равно 0.
379 : 2 = 189 остаток 1
189 : 2 = 94 остаток 1
94 : 2 = 47 остаток 0
47 : 2 = 23 остаток 1
23 : 2 = 11 остаток 1
11 : 2 = 5 остаток 1
5 : 2 = 2 остаток 1
2 : 2 = 1 остаток 0
1 : 2 = 0 остаток 1
Теперь, мы обращаем наше внимание на остаток, оно и является ответом, только есть нюанс, мы должны писать числа с конца.
Получаем, что 379 в 10 сист.сч. = 101111011 в 2 системе счисления
Аналогично и с 8 системой счисления :
379 : 8 = 47 остаток 3
47 : 8 = 5 остаток 7
5 : 8 = 0 остаток 5
379 в 10 системе счисления = 573 в 8 системе счисления