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
2005 : 8 = 250, остаток 5
250 : 8 = 31, остаток 2
31 : 8 = 3, остаток 7
3 : 8 = 0, остаток 3
Выписываем остатки в обратном порядке: 3725
В пятеричную
2005 : 5 = 401, остаток 0
401 : 5 = 80, остаток 1
80 : 5 = 16, остаток 0
16 : 5 = 3, остаток 1
3 : 5 = 0, остаток 3
Выписываем остатки в обратном порядке: 31010
В двоичную
2005 : 2 = 1002, остаток 1
1002 : 2 = 501, остаток 0
501 : 2 = 250, остаток 1
250 : 2 = 125, остаток 0
125 : 2 = 62, остаток 1
62 : 2 = 31, остаток 0
31 : 2 = 15, остаток 1
15 : 2 = 7, остаток 1
7 : 2 = 3, остаток 1
3 : 2 = 1, остаток 1
1 : 2 = 0, остаток 1
Выписываем остатки в обратном порядке: 11111010101
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