Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2021, 17:33   #1
canadamoscow
Пользователь
 
Аватар для canadamoscow
 
Регистрация: 16.05.2020
Сообщений: 57
По умолчанию Ряд 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,544
По умолчанию

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

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

Код:
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
Сообщений: 57
По умолчанию

Код:
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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



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