Напишите программу, которая находит все числа в диапазоне от a до b , сумма цифр которых не меняется при умножении на 2, 3, 4, 5, 6, 7, 8 и 9 (например, число 9). используйте функцию для вычисления суммы цифр числа. простым для начинающих входные данные входная строка содержит два натуральных числа – границы диапазона a и b . гарантируется, что a ≤ b . выходные данные программа должна вывести все числа, удовлетворяющий условию, в одной строке, разделив их пробелами. примеры входные данные 1 10 выходные данные 9

11122223 11122223    1   22.09.2019 04:20    33

Ответы
sunaway1p0ar90 sunaway1p0ar90  08.10.2020 08:39
Program n1;
function sumdig(x: integer): integer;
var sum: integer;
begin
sum:=0;
while x<>0 do
begin
sum:=sum+x mod 10;
x:=x div 10;
end;
sumdig:=sum;
end;
function opr(x: integer): boolean;
var i,k: integer;
begin
opr:=false;
k:=0;
for i:=2 to 9 do if sumdig(x)=sumdig(x*i) then k:=k+1;
if k=8 then opr:=true;
end;
var a,b,i: integer;
begin
readln(a,b);
for i:=a to b do if opr(i) then write(i,' ');
end.
ПОКАЗАТЬ ОТВЕТЫ
Yanalime2006 Yanalime2006  08.10.2020 08:39
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
Внимание! Если программа не работает, обновите версию!

function Sod(Self:integer):integer; extensionmethod;
begin
  Result:=0;
  while Self<>0 do begin
    Result+=Self mod 10;
    Self:=Self div 10
    end
end;

function IsGood(Self:integer):boolean; extensionmethod;
begin
  var sd:=Self.Sod; Result:=True;
  for var i:=2 to 9 do begin
    Result:=(i*Self).Sod=sd;
    if Result=False then Exit
    end
end;
    
begin
  var (a,b):=ReadInteger2;
  Range(a,b).Where(t->t.IsGood).Println
end.

Пример
1 1000
9 18 45 90 99 180 198 297 396 450 495 549 594 693 792 819 891 900 909 918 945 990 999
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика