Вывести первые n членов треугольной последовательности - Turbo Pascal
Формулировка задачи:
Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ...
По данному натуральному n выведите первые n членов этой последовательности. Попробуйте обойтись только одним циклом for.
Входные данные
Вводится натурально число n.
Выходные данные
Выведите ответ на задачу.
Примеры
входные данные
2
выходные данные
1 2
входные данные
5
выходные данные
1 2 2 3 3
Решение задачи: «Вывести первые n членов треугольной последовательности»
textual
Листинг программы
//рекурсивная процедура вывода чисел ряда //k-число n-количество выводимых чисел procedure vyvod(k,n:integer); begin if n>0 then begin write(k,' '); vyvod(k,n-1); end; end; var n,k,q,i:integer; a:real; begin write('n='); readln(n); //найдем ближайшее треугольное число сверху a:=(-1+sqrt(1+8*n))/2;//из формулы Tn=n*(n+1)/2 if frac(a)=0 then k:=trunc(a) else k:=trunc(a)+1; q:=0; for i:=1 to k-1 do begin vyvod(i,i); q:=q+i; end; vyvod(k,n-q); end.
Объяснение кода листинга программы
- В начале кода объявляются переменные n, k, q и i, а также переменная a типа real.
- Затем происходит чтение значения переменной n с помощью функции readln.
- Находится ближайшее треугольное число сверху с помощью формулы Tn=n*(n+1)/2. Если дробная часть этого числа равна нулю, то k присваивается целая часть числа, иначе k присваивается целая часть плюс единица.
- Переменная q инициализируется значением 0.
- Затем происходит цикл for, который выполняется от 1 до k-1. Внутри цикла вызывается рекурсивная процедура vyvod, которая выводит текущее значение i и все предыдущие значения i. Значение i увеличивается на 1 на каждой итерации цикла.
- После завершения цикла for вызывается последняя итерация vyvod с аргументами k и n-q.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д