Будем называть число красивым, если сумма его цифр в десятичной системе счисления делятся на количество цифр в нём (в десятичной системе счисления). необходимо найти n-ое в порядке возрастания красивое число. примеры : 1 - 1; 15 - 20; все это надо в паскале abc
function IsNice(n:longint):boolean;
// Отвечает на вопрос, является ли число красивым
var
d,nd,sd:byte;
begin
sd:=0; nd:=0;
repeat
d:=n mod 10;
sd:=sd+d; Inc(nd);
n:=n div 10
until n=0;
IsNice:=(sd mod nd = 0)
end;
var
i,n,k:longint;
begin
Write('Порядковый номер "красивого" числа: '); Read(n);
i:=1; k:=0;
repeat
if IsNice(i) then Inc(k);
if k<>n then Inc(i)
until k=n;
Writeln('Красивое число равно ',i)
end.
Тестовое решение:
Порядковый номер "красивого" числа: 15
Красивое число равно 20
Чтобы найти n-ое в порядке возрастания красивое число, нам нужно сначала понять, как именно работает алгоритм для нахождения таких чисел.
1. Начнем с создания функции для проверки, является ли число красивым. Внутри этой функции мы рассмотрим каждую цифру числа и будем суммировать их. Затем мы проверим, делится ли сумма на количество цифр в числе без остатка. Если делится, то число является красивым, иначе - нет.
2. Далее создадим основную функцию, которая будет искать n-ое красивое число. В этой функции мы будем создавать переменные - текущее число (начиная с 1) и счетчик найденных красивых чисел.
3. В цикле мы будем проверять, является ли текущее число красивым. Если да, увеличиваем счетчик найденных красивых чисел и проверяем, равен ли счетчик n. Если да, то мы нашли n-ое красивое число и возвращаем его.
4. Если текущее число не является красивым, мы увеличиваем его на 1 и продолжаем цикл до тех пор, пока не найдем n-ое красивое число.
Вот код на языке PascalABC для решения этой задачи:
```pascal
function IsBeautifulNumber(num: integer): boolean;
var
sum, digitCount, temp: integer;
begin
sum := 0;
temp := num;
digitCount := 0;
while temp > 0 do
begin
sum := sum + (temp mod 10);
temp := temp div 10;
digitCount := digitCount + 1;
end;
if (sum mod digitCount) = 0 then
IsBeautifulNumber := true
else
IsBeautifulNumber := false;
end;
function FindNthBeautifulNumber(n: integer): integer;
var
beautifulCount, currentNumber, result: integer;
begin
beautifulCount := 0;
currentNumber := 1;
while beautifulCount < n do
begin
if IsBeautifulNumber(currentNumber) then
begin
beautifulCount := beautifulCount + 1;
if beautifulCount = n then
begin
result := currentNumber;
break;
end;
end;
currentNumber := currentNumber + 1;
end;
FindNthBeautifulNumber := result;
end;
var
n: integer;
nthBeautifulNumber: integer;
begin
writeln('Введите n:');
readln(n);
nthBeautifulNumber := FindNthBeautifulNumber(n);
writeln('n-ое красивое число:', nthBeautifulNumber);
end.
```
В этом коде мы используем две функции: IsBeautifulNumber и FindNthBeautifulNumber. Первая проверяет, является ли число красивым, и возвращает булево значение, вторая находит n-ое красивое число и возвращает его.
Надеюсь, мой ответ будет для вас понятен и полезен! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.