Дано натуральное число n. найти и вывести все числа в интервале от 1 до n - 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. если таких чисел нет, то вывести слово "нет"
Var N,A,k:integer; P,S:real; Begin Write('N = ');ReadLn(N); k:=0; For N:= 1 to N-1 do Begin A:=N; S:=0; While A>0 do Begin S:=S+(A mod 10); A:=A div 10; End; A:=N; P:=1; While A>0 do Begin P:=P*(A mod 10); A:=A div 10; End; if S=P then Begin WriteLn(N); k:=k+1; End; End; if k=0 then WriteLn('Нет'); End.
Vitalevich1187
16.08.2022
Если число 49 записывается как 121, значит первый остаток от деления равен 1, то есть основанием системы счисления является число, кратное 48.
121 имеет 3 разряда, значит основание однозначно меньше 10 и больше 2. Подходят 3, 4, 6, 8.
Учитывая, что в числе 121 три разряда, значит число 48 делилось всего три раза. Число 8 не подойдет, т.к. 48/8=6, значит будет всего два деления. Число 3 не подойдет, т.к. 48/3 = 16, 16/3=5 - то есть тут будет больше трёх знаков. Число 4 не подойдет, т.к. 48/4=12, а 12 делится на 4 без остатка, но, судя по числу, во втором делении остаток должен быть равен 2. Остаётся число 6. Проверим
49/6=8 |1 8/6 = 1 |2 1/6=0 |1
121(6)
aivia29
16.08.2022
Одномерный массив можно представить как линейную структуру, в которой элементы следуют друг за другом. Однако бывают более сложные структуры данных. Например, двумерные массивы, которые можно описать как таблицу, в ячейках которой располагаются значения. Для обращения к данным массива указывается номера их строк и столбцов. Часто табличные массивы называют матрицами. Обычно двумерные массивы на языке программирования Pascal описываются так: array [1..m, 1..n] of базовый_тип Однако можно их описывать и по-другому: array [1..m] of array [1..n] of базовый_тип
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Дано натуральное число n. найти и вывести все числа в интервале от 1 до n - 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. если таких чисел нет, то вывести слово "нет"
N,A,k:integer;
P,S:real;
Begin
Write('N = ');ReadLn(N);
k:=0;
For N:= 1 to N-1 do
Begin
A:=N;
S:=0;
While A>0 do
Begin
S:=S+(A mod 10);
A:=A div 10;
End;
A:=N;
P:=1;
While A>0 do
Begin
P:=P*(A mod 10);
A:=A div 10;
End;
if S=P then
Begin
WriteLn(N);
k:=k+1;
End;
End;
if k=0 then WriteLn('Нет');
End.