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