Будем называть число красивым, если сумма его цифр в десятичной системе счисления делятся на количество цифр в нём (в десятичной системе счисления). необходимо найти n-ое в порядке возрастания красивое число. примеры : 1 - 1; 15 - 20; все это надо в паскале abc

novkov641800 novkov641800    3   06.07.2019 02:00    21

Ответы
NeoBest1 NeoBest1  29.07.2020 12:05
// PascalABC.Net

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-ое красивое число и возвращает его.

Надеюсь, мой ответ будет для вас понятен и полезен! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика