D4. Разбиение на невозрастающие слагаемые, лексикографический порядок Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Дано натуральное число N. Рассмотрим его разбиение на натуральные слагаемые. Два разбиения, отличающихся только порядком слагаемых, будем считать за одно, поэтому можно считать, что слагаемые в разбиении упорядочены по невозрастанию.
Формат ввода
Задано единственное число N. (N ≤ 40)
Формат вывода
Необходимо вывести все разбиения числа N на натуральные слагаемые в лексикографическом порядке.
Растровое графическое изображение формируется в процессе сканирования изображений и фотографий с бумаги или фотопленок, а также при использовании цифровых фото и видеокамер. РГИ (растровое графическое изображение) очень чувствительно к масштабированию; формируется из отдельных точек - пикселей.
Векторное же графическое изображение формируется из линий, прямоугольников, треугольников, квадратов и т.д., которые сохраняются в памяти компьютера с математических формул. Используется для сохранения четких контуров изображений; создания рисунков и различных графических объектов.
Function prime(x:integer):boolean; var t:boolean; d:integer; begin t := true; d := 2; while t and (d*d <= x) do begin if x mod d = 0 then t := false; d := d + 1 end; prime := t end;
function order(x:integer):boolean; var t:boolean; d:integer; begin d := -1; repeat t := x mod 10 > d; d := x mod 10; x := x div 10 until not t or (x = 0); order := t end;
var t:boolean; i,k,n:integer; begin t := false; read(k,n); for i := k to n do if prime(i) then if order(i) then begin write(i,' '); t := true end; if not t then write(0) end.
Векторное же графическое изображение формируется из линий, прямоугольников, треугольников, квадратов и т.д., которые сохраняются в памяти компьютера с математических формул. Используется для сохранения четких контуров изображений; создания рисунков и различных графических объектов.
var
t:boolean;
d:integer;
begin
t := true;
d := 2;
while t and (d*d <= x) do
begin
if x mod d = 0 then
t := false;
d := d + 1
end;
prime := t
end;
function order(x:integer):boolean;
var
t:boolean;
d:integer;
begin
d := -1;
repeat
t := x mod 10 > d;
d := x mod 10;
x := x div 10
until not t or (x = 0);
order := t
end;
var
t:boolean;
i,k,n:integer;
begin
t := false;
read(k,n);
for i := k to n do
if prime(i) then
if order(i) then
begin
write(i,' ');
t := true
end;
if not t then
write(0)
end.