Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2021, 17:33   #1
canadamoscow
Пользователь
 
Аватар для canadamoscow
 
Регистрация: 16.05.2020
Сообщений: 49
По умолчанию Ряд 1121123211234321... индекс N в k-й раз?

Есть безконечный ряд натуральных чисел 1, 1, 2, 1, 1, 2, 3, 2, 1, 1, 2, 3, 4, 3, 2, 1, 1, 2, 3, 4, 5, 4, 3, 2, 1, …. Члены ряда нумеруются, начиная с единицы. На каком месте встретится заданное натуральное число n в k-й раз?
canadamoscow вне форума Ответить с цитированием
Старый 11.08.2021, 18:06   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,748
По умолчанию

Можно в лоб перебором решить, но для больших значений n и k такое решение может быть весьма долгим по времени.

Второй вариант решения - выводить формулу.
Arigato вне форума Ответить с цитированием
Старый 12.08.2021, 00:15   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,269
По умолчанию

Код:
function formula(n, k: integer): integer;
var
  kk: integer;
begin
  kk := k div 2;
  formula := (n + kk) * (n + kk) + 2 * (k mod 2 - 1) * kk - n + 1;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 12.08.2021 в 00:39.
BDA вне форума Ответить с цитированием
Старый 12.08.2021, 11:15   #4
canadamoscow
Пользователь
 
Аватар для canadamoscow
 
Регистрация: 16.05.2020
Сообщений: 49
По умолчанию

Код:
function IndexNk(n, k: integer): integer;
var
 MaxSeqNk,IndexEndOfSeq,IndexMaxSeq: integer;
begin
 MaxSeqNk := k div 2 + n;  //  Максимальное число в ПодРяду где N встречается k-ый раз
 IndexEndOfSeq := MaxSeqNk * MaxSeqNk; // Индекс конца ПодРяда где N k-й раз
 IndexMaxSeq := IndexEndOfSeq - MaxSeqNk + 1;  // индекс максимаольного числа ПодРяда
 IndexNk := IndexMaxSeq + (MaxSeqNk - n) * (k mod 2 * 2 - 1) //влево или вправо от макс.числа до Nk
end;
canadamoscow вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хеш-таблица, метод цепочек, первичный индекс и вторичный индекс - C# AnatoliyAnatoliy Помощь студентам 2 09.01.2018 15:30
(Pascal) Дан ряд, найти частичную сумму ряда(Ряд сходится к значению 1) MooonyCat Помощь студентам 4 20.11.2016 20:08
Задана функция логарифмического синуса и ее разложение в ряд. Разработайте алгоритм вычисления разложения в ряд с погрешностью ξ пышь-пышь Помощь студентам 4 17.05.2013 06:49
Дан ряд любых чисел. Когда повторяется число второй раз, то его надо удалить. Katia1234 Помощь студентам 6 05.05.2012 09:09
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 02:44