Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N — 1, у которых...

0 голосов
189 просмотров

Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N — 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово "нет". Помогите пожалуйста написать программу в программе PascalABC.NET.


Информатика (67 баллов) | 189 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

function SumD(k:integer):integer;
begin
  Result:=0;
  while k>0 do (Result,k):=(Result+k mod 10,k div 10)
end;

function Good(k,s:integer):boolean;
begin
  var p:=1;
  while k>0 do (p,k):=(p*(k mod 10),k div 10);
  Result:=p=s
end;

begin
  var n:=ReadInteger('n=');
  var s:=SumD(n);
  Range(1,n-1).Where(n->Good(n,s)).Println
end.

Пример
n= 44
8 18 24 42
(150k баллов)
0

Слушай в учебнике дан пример "N=44. Получаются числа 18 и 24". А когда по твоей программе там таких чисел вообще нет...