Разбиение на невозрастающие слагаемые, лексикографический порядок Дано натуральное число N. Рассмотрим его разбиение на натуральные слагаемые. Два разбиения, отличающихся только порядком слагаемых, будем считать за одно, поэтому можно считать, что слагаемые в разбиении упорядочены по невозрастанию. Входные данные Задано единственное число N. (N ≤ 40) Выходные данные Необходимо вывести все разбиения числа N на натуральные слагаемые в лексикографическом порядке. Примеры
входные данные
5
выходные данные
1 1 1 1 1
2 1 1 1
2 2 1
3 1 1
3 2
4 1
5
const // объявление константы
n=10; // сама константа n
var //объявление переменных
a:array[1..n]of integer; // (сами переменные) объявлен массив а от 1 до n // типа integer ( целые числа от −2 147 483 648 до 2 147 483 647 )
min,max,i,s:integer; // объявлены переменные min , max,a,s - названия ,
// типа integer
begin // начало
for i:=1 to n do // цикл который выполняет повторно действие до тех пор, // пока условное значение не станет false (т.е число не превысит n);
read(a[i]); //cчитывет значение массива а . [i] в квадратных скобках // означает индекс числа . т.е a[1] - первое число массива
min:=1;max:=1; // присваивает переменным min и max значение 1
for i:=2 to n do // уже описывал
begin
if a[i] min:=i; // оператор сравнения , если условие подходит входит
// в цикл
if a[i]>a[max]then // оператор сравнения , если условие подходит входит
// в цикл
max:=i; // присваивает max значение i
end; // конец
if max>min then / оператор сравнения , если условие подходит входит
// в цикл
for i:=min to max do // описывал
s:=s+a[i] // к переменной s добавляет элемент a[i]
else // если условие if не выполнилось
for i:=max to min do //
s:=s+a[i]; //
writeln(' S= ',s); // напечатать на новой строке то чему равно s
end.
// Задание №1
var a,b,c:real;
begin
writeln('Введите длины сторон треугольника');
readln(a, b, c);
if (a=b) and (b=c) and(a>0) then
writeln('Равносторонний')
else
writeln('Не равносторонний');
end.
//Задание №2
var
a, b, i, s: integer;
begin
writeln('Введите левую границу диапазона');
readln(a);
writeln('Введите правую границу диапазона');
readln(b);
s := 0;
for i := a to b do
if i mod 2 <> 0 then s := s + i;
writeln('Сумма Нечетных:', s);
end.