Как найти на каком месте стоит число

1552 / 918 / 193

Регистрация: 26.03.2010

Сообщений: 3,105

1

Определить, какая цифра стоит на заданном месте в последовательности

09.12.2011, 23:18. Показов 4628. Ответов 16


Студворк — интернет-сервис помощи студентам

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

первая, это когда все числа начинают выписывать в ряд (123456789101112123.. и т.д.) и нужно узнать, какая цифра стоит на i — том месте.
и вторая, это когда окружность, для простоты пирог круглой формы, начинают разрезать по диаметру, и нужно узнать, сколько максимально можно получить кусков за n разрезов.

спасибо!



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

09.12.2011, 23:18

16

alkagolik

Заблокирован

09.12.2011, 23:28

2

судя по длине числа испльзуется массив, предположу что можно использовать memcpy для

Цитата
Сообщение от neske
Посмотреть сообщение

какая цифра стоит на i — том месте.

надо подробней.

Цитата
Сообщение от neske
Посмотреть сообщение

сколько максимально можно получить кусков за n разрезов.

2n



1



50 / 50 / 12

Регистрация: 22.05.2011

Сообщений: 326

09.12.2011, 23:29

3

Насчет второй, точно по диаметру?

Не по теме:

Читал похожую задачу. Там можно любым образом провести n прямых, в этом и уловка задачи



1



1552 / 918 / 193

Регистрация: 26.03.2010

Сообщений: 3,105

09.12.2011, 23:32

 [ТС]

4

alkagolik, я не понял, что подробнее? решение в лоб не пройдет.

AncinetHero, да, вы правы, это я не верно написал, n прямых.



0



AncinetHero

50 / 50 / 12

Регистрация: 22.05.2011

Сообщений: 326

09.12.2011, 23:33

5

Ко второй задаче ответ выражается формулой

C++
1
n*(n+1)/2+1

Алгоритм кажется такой.

Для получения максимального ответа каждую следующую прямую мы будем проводить так, чтобы она пересекала все предыдущие, а значит если было проведено i прямых, наша прямая пройдет через i частей, значит количество станет равно +i (каждую часть она поделит на 2 части, всего из i частей станет 2*i частей).
И так далее, арифметическая прогрессия.
То есть если у нас проведена 1 прямая, max кусков 1+1=2. Если 2 прямых, кусков 2+2=4. Если 3 прямых, кусков 4+3=7 и т.д.



1



1552 / 918 / 193

Регистрация: 26.03.2010

Сообщений: 3,105

09.12.2011, 23:35

 [ТС]

6

а само решение не помните?



0



alkagolik

Заблокирован

09.12.2011, 23:38

7

допустим разрядность m числа x, надо узнать цифру y из разряда n <= m.
y = ( x / 10 ^ (m — n) ) mod 10

Добавлено через 1 минуту

Цитата
Сообщение от neske
Посмотреть сообщение

я не понял, что подробнее?

длина числа, тип массива. Это длинная арифметика?



1



1404 / 646 / 135

Регистрация: 11.08.2011

Сообщений: 2,299

Записей в блоге: 2

09.12.2011, 23:40

8

в 1 задаче пару ифов и моды… решал когда-то



1



50 / 50 / 12

Регистрация: 22.05.2011

Сообщений: 326

09.12.2011, 23:40

9

Решение вписал выше.



1



1552 / 918 / 193

Регистрация: 26.03.2010

Сообщений: 3,105

09.12.2011, 23:46

 [ТС]

10

а вы точно так поняли задачу?
к примеру имеется строка, ну или массив с цифрами, в принципе неважно.
s = 1234567891011121314..
и на 13 месте стоит единица.
а нам необходимо найти на i — том месте.



0



1404 / 646 / 135

Регистрация: 11.08.2011

Сообщений: 2,299

Записей в блоге: 2

09.12.2011, 23:49

11

ограничения?



0



alkagolik

Заблокирован

09.12.2011, 23:52

12

Цитата
Сообщение от neske
Посмотреть сообщение

к примеру имеется строка, ну или массив с цифрами, в принципе неважно.

принципиально важно. длинная арифметика в uint — 10 разрядов, есть смысл скопировать нужные байты с помощью memcpy и вычислить число по формуле



0



50 / 50 / 12

Регистрация: 22.05.2011

Сообщений: 326

09.12.2011, 23:52

13

Цитата
Сообщение от Dani
Посмотреть сообщение

ограничения?

1 <= N <= 10^4 скорее всего)



0



1404 / 646 / 135

Регистрация: 11.08.2011

Сообщений: 2,299

Записей в блоге: 2

09.12.2011, 23:54

14

когда я решал было 1 — 10^9



0



50 / 50 / 12

Регистрация: 22.05.2011

Сообщений: 326

10.12.2011, 00:01

15

Цитата
Сообщение от alkagolik
Посмотреть сообщение

принципиально важно. длинная арифметика в uint — 10 разрядов, есть смысл скопировать нужные байты с помощью memcpy и вычислить число по формуле

А откуда вы взяли эту формулу? Где можно прочитать про вывод данной формулы?



0



alkagolik

Заблокирован

10.12.2011, 00:57

16

Цитата
Сообщение от AncinetHero
Посмотреть сообщение

А откуда вы взяли эту формулу?

из головы. Автор же упорно молчит, числа целые, не целые, символьные, не символьные. Я предположил что речь идет о целых числах, если да то формула имеет вид
https://www.cyberforum.ru/cgi-bin/latex.cgi?y_{P} = frac{x_{P}} {P^{m - n}} mod P она даст цифру из разряда n<=m числа x, разрядности m. сс = P

Добавлено через 47 минут
если разряды считать справа (как и положено) то P^n



0



Эксперт С++

4726 / 2547 / 757

Регистрация: 18.08.2009

Сообщений: 4,568

10.12.2011, 01:43

17

neske, ссылку на задачи можете дать?



0



К примеру у нас есть список x = [1, 4, 6, 4, 6, 7, 8], как найти индекс числа 7?

insolor's user avatar

insolor

45.7k16 золотых знаков54 серебряных знака95 бронзовых знаков

задан 7 дек 2022 в 19:00

Остап's user avatar

1

Если вас интересует именно list, вам нужна функция index:

print([1, 2, 3, 4, 5, 6, 7].index(7))

ответ дан 7 дек 2022 в 19:04

Duracell's user avatar

DuracellDuracell

1,9913 золотых знака16 серебряных знаков33 бронзовых знака

Если нужных чисел в списке несколько, можно их индексы найти так:

x = [1, 4, 6, 4, 6, 7, 8, 7, 9]
indexes = [i for i,d in enumerate(x) if d == 7]
print(indexes)
[5, 7]

ответ дан 7 дек 2022 в 20:06

Алексей Р's user avatar

Алексей РАлексей Р

7,1722 золотых знака4 серебряных знака17 бронзовых знаков

Думаю, что решения с методом index вам поможет решить задачу, но хотелось бы подметить несколько важных моментов. Метод index работает за O(n). Что не самый плохой результат, но всё же не идеальный. Для более эффективного поиска элемента в списке можно применить, так называемый «бинарный поиск».

Wiki

Его худшая асимптотика — O(log n), что намного лучше, чем у index. Но для корректной работы бинарного поиска необходимо, чтобы список был отсортирован. Т.е. если в вашей задаче дан заведомо отсортированный список, то стоит обратить внимание на бинарный поиск.

В python есть стандартная библиотека, реализующая бинарный поиск — bisect.

Доки

ответ дан 7 дек 2022 в 21:08

Ret7020's user avatar

Ret7020Ret7020

4512 серебряных знака9 бронзовых знаков

Формулировка задачи:

1)Усложненную таблицу из N элементов уплотнить так, чтобы сохранить порядок следования ненулевых элементов (т.е. убрать нулевые элементы, поместив их в конец).
2)Заданы массив и некоторое число. Найти, на каком месте находится это число в массиве.

Помогите! Пожалуйста!

Код к задаче: «Найти, на каком месте находится число в массиве»

textual

begin
randomize;
 for i := 1 to n do
  a[i] := random(20);
readln(value);
num := 0;
for i := 1 to n do
 if a[i] = value then num := i;
if num <> 0 then writeln(num);
readln
end.

Полезно ли:

5   голосов , оценка 3.600 из 5

Изучая программирование на Python, вы практически в самом начале знакомитесь со списками и различными операциями, которые можете выполнять над ними. В этой статье мы бы хотели рассказать об одной из таких операций над списками.

Представьте, что у вас есть список, состоящий из каких-то элементов, и вам нужно определить индекс элемента со значением x. Сегодня мы рассмотрим, как узнать индекс определенного элемента списка в Python.

Но сначала давайте убедимся, что все  понимают, что представляет из себя список.

Список в Python — это встроенный тип данных, который позволяет нам хранить множество различных значений, таких как числа, строки, объекты datetime и так далее.

Важно отметить, что списки упорядочены. Это означает, что последовательность, в которой мы храним значения, важна.

Индексирование списка начинаются с нуля и заканчивается на длине списка минус один. Для получения более подробной информации о списках вы можете обратиться к статье «Списки в Python: полное руководство для начинающих».

Итак, давайте посмотрим на пример списка:

fruits = ["apple", "orange","grapes","guava"]
print(type(fruits))
print(fruits[0])
print(fruits[1])
print(fruits[2])

# Результат:
# <class 'list'>
# apple
# orange
# grapes

Мы создали список из 4 элементов. Первый элемент в списке имеет нулевой индекс, второй элемент — индекс 1, третий элемент — индекс 2, а последний — 3.

Для списка получившихся фруктов fruits допустимыми индексами являются 0, 1, 2 и 3. При этом длина списка равна 4 (в списке 4 элемента). Индекс последнего элемента равен длине списка (4) минус один, то есть как раз 3.

[python_ad_block]

Как определить индекс элемента списка в Python

Итак, как же определить индекс элемента в Python? Давайте представим, что у нас есть элемент списка и нам нужно узнать индекс или позицию этого элемента. Сделать это можно следующим образом:

print(fruits.index('orange'))
# 1

print(fruits.index('guava'))
# 3

print(fruits.index('banana'))
# А здесь выскочит ValueError, потому что в списке нет значения banana

Списки Python предоставляют нам метод index(), с помощью которого можно получить индекс первого вхождения элемента в список, как это показано выше.

Познакомиться с другими методами списков можно в статье «Методы списков Python».

Мы также можем заметить, что метод index() вызовет ошибку VauleError, если мы попытаемся определить индекс элемента, которого нет в исходном списке.

Для получения более подробной информации о методе index() загляните в официальную документацию.

Базовый синтаксис метода index() выглядит так:

list_var.index(item),

где list_var — это исходный список,   item — искомый элемент.

Мы также можем указать подсписок для поиска, и синтаксис для этого будет выглядеть следующим образом:

list_var.index(item, start_index_of_sublist, end_index_of_sublist)

Здесь добавляются два аргумента: start_index_of_sublist и end_index_of_sublist. Тут всё просто. start_index_of_sublist обозначает, с какого элемента списка мы хотим начать поиск, а end_index_of_sublist, соответственно, на каком элементе (не включительно) мы хотим закончить.

Чтобы проиллюстрировать это для лучшего понимания, давайте рассмотрим следующий пример.

Предположим, у нас есть список book_shelf_genres, где индекс означает номер полки (индексация начинается с нуля). У нас много полок, среди них есть и полки с учебниками по математике.

Мы хотим узнать, где стоят учебники по математике, но не вообще, а после четвертой полки. Для этого напишем следующую программу:

book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", "Cooking", "Math"]
print(book_shelf_genres.index("Math"))
# Результат:
# 1

Здесь мы видим проблему. Использование просто метода index() без дополнительных аргументов выдаст первое вхождение элемента в список, но мы хотим знать индекс значения «Math» после полки 4.

Для этого мы используем метод index() и указываем подсписок для поиска. Подсписок начинается с индекса 5 до конца списка book_shelf_genres, как это показано во фрагменте кода ниже:

print(book_shelf_genres.index("Math", 5))
# Результат:
# 7

Обратите внимание, что указывать конечный индекс подсписка необязательно.

Чтобы вывести индекс элемента «Math» после полки номер 1 и перед полкой номер 5, мы просто напишем следующее:

print(book_shelf_genres.index("Math", 2, 5))
# Результат:
# 4

Как найти индексы всех вхождений элемента в списке

А что, если искомое значение встречается в списке несколько раз и мы хотим узнать индексы всех этих элементов? Метод index() выдаст нам индекс только первого вхождения.

В этом случае мы можем использовать генератор списков:

book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", 
                     "Cooking", "Math"]

indices = [i for i in range(0, len(book_shelf_genres)) if book_shelf_genres[i]=="Math"]
print(indices)

# Результат:
# [1, 4, 7]

В этом фрагменте кода мы перебираем индексы списка в цикле for и при помощи range(). Далее мы проверяем значение элемента под каждым индексом на равенство «Math«. Если значение элемента — «Math«, мы сохраняем значение индекса в списке.

Все это делается при помощи генератора списка, который позволяет нам перебирать список и выполнять некоторые операции с его элементами. В нашем случае мы принимаем решения на основе значения элемента списка, а в итоге создаем новый список.

Подробнее про генераторы списков можно почитать в статье «Генераторы списков в Python для начинающих».

Благодаря генератору мы получили все номера полок, на которых стоят книги по математике.

Как найти индекс элемента в списке списков

Теперь представьте ситуацию, что у вас есть вложенный список, то есть список, состоящий из других списков. И ваша задача — определить индекс искомого элемента для каждого из подсписков. Сделать это можно следующим образом:

programming_languages = [["C","C++","Java"],
                         ["Python","Rust","R"],
                         ["JavaScript","Prolog","Python"]]

indices = [(i, x.index("Python")) for i, x in enumerate(programming_languages) if "Python" in x]
print(indices)

# Результат:
# [(1, 0), (2, 2)]

Здесь мы используем генератор списков и метод index(), чтобы найти индексы элементов со значением «Python» в каждом из имеющихся подсписков. Что же делает этот код?

Мы передаем список programming_languages ​​методу enumerate(), который просматривает каждый элемент в списке и возвращает кортеж, содержащий индекс и значение элемента списка.

Каждый элемент в списке programming_languages ​​также является списком. Оператор in проверяет, присутствует ли элемент «Python» в этом списке. Если да — мы сохраняем индекс подсписка и индекс элемента «Python» внутри подсписка в виде кортежа.

Результатом программы, как вы можете видеть, является список кортежей. Первый элемент кортежа — индекс подсписка, а второй — индекс искомого элемента в этом подсписке.

Таким образом, (1,0) означает, что подсписок с индексом 1 списка programming_languages ​​имеет элемент «Python», который расположен по индексу 0. То есть, говоря простыми словами, второй подсписок содержит искомый элемент и этот элемент стоит на первом месте. Не забываем, что в Python индексация идет с нуля.

Как искать индекс элемента, которого, возможно, нет в списке

Бывает, нужно получить индекс элемента, но мы не уверены, есть ли он в списке.

Если попытаться получить индекс элемента, которого нет в списке, метод index() вызовет ошибку ValueError. При отсутствии обработки исключений ValueError вызовет аварийное завершение программы. Такой исход явно не является хорошим и с ним нужно что-то сделать.

Вот два способа, с помощью которых мы можем избежать такой ситуации:

books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"]
ind = books.index("The Pragmatic Programmer") if "The Pragmatic Programmer" in books else -1
print(ind)

# Результат:
# 2

Один из способов — проверить с помощью оператора in, есть ли элемент в списке. Оператор in имеет следующий синтаксис:

var in iterable

Итерируемый объект — iterable — может быть списком, кортежем, множеством, строкой или словарем. Если var существует как элемент в iterable, оператор in возвращает значение True. В противном случае он возвращает False.

Это идеально подходит для решения нашей проблемы. Мы просто проверим, есть ли элемент в списке, и вызовем метод index() только если элемент существует. Это гарантирует, что метод index() не вызовет нам ошибку ValueError.

Но если мы не хотим тратить время на проверку наличия элемента в списке (это особенно актуально для больших списков), мы можем обработать ValueError следующим образом:

books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"]
try:
    ind = books.index("Design Patterns")
except ValueError:
    ind = -1
print(ind)

# Результат:
# -1

Здесь мы применили конструкцию try-except для обработки ошибок. Программа попытается выполнить блок, стоящий после слова try. Если это приведет к ошибке ValueError, то она выполнит блок после ключевого слова except. Подробнее про обработку исключений с помощью try-except можно почитать в статье «Обрабатываем исключения в Python: try и except».

Заключение

Итак, мы разобрали как определить индекс элемента списка в Python. Теперь вы знаете, как это сделать с помощью метода index() и генератора списков.

Мы также разобрали, как использовать метод index() для вложенных списков и как найти каждое вхождение элемента в списке. Кроме того, мы рассмотрели ситуацию, когда нужно найти индекс элемента, которого, возможно, нет в списке.

Мы надеемся, что данная статья была для вас полезной. Успехов в написании кода!

Больше 50 задач по Python c решением и дискуссией между подписчиками можно посмотреть тут

Перевод статьи «Python Index – How to Find the Index of an Element in a List».

Числовой последовательностью называют ряд чисел, полученных по некоторому правилу или формуле.

Например, правило «все положительные четные числа по возрастанию начиная с двойки» задает последовательность: (2; 4; 6; 8; 10…) А правило «первое число равно (3), а каждое следующее число в два раза больше предыдущего» формирует последовательность: (3; 6; 12; 24; 48….)

Ниже разобраны несколько разных способов задания числовых последовательностей.

Числа, образующие последовательность, называются ее членами
(или элементами). И каждое из этих чисел имеет свой порядковый номер.

Например, в последовательности (3; 6; 12; 24; 48…) тройка является первым членом (порядковый номер – один), шестерка – вторым (ее номер по порядку равен двум), двенадцать – третьим и т.д.

В математике последовательность обозначают маленькой латинской буквой, а каждый отдельный ее элемент – той же буквой с числовым индексом равным порядковому номеру этого элемента.

То есть, если последовательность (3; 6; 12; 24; 48…) обозначить как (a_n), то можно записать, что (a_1=3), (a_2=6), (a_3=12), (a_4=24) и так далее.

Иными словами, для последовательности (a_n={ 3;: 6; :12; : 24; : 48; : 96; : 192; : 384…}).

порядковый номер элемента

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

обозначение элемента

(a_1)

(a_2)

(a_3)

(a_4)

(a_5)

(a_6)

(a_7)

(a_8)

значение элемента

(3)

(6)

(12)

(24)

(48)

(96)

(192)

(384)

Отметим, что членами последовательности необязательно должны быть различные числа. Она может состоять из одних и тех же чисел, например, выглядеть вот так: (1; : 1; : 1; : 1…) .

Способы задания числовых последовательностей

Все способы формирования числовых последовательностей можно разделить на три большие группы:

— I способ: словесный. Здесь все просто – в буквальном смысле словами описывается каким образом можно вычислить элементы искомой последовательности.

Пример: Напишите первые пять членов последовательности квадратов натуральных чисел.

Решение: Натуральными называют числа, возникающие естественным образом при счете количества предметов, то есть: (1; : 2; : 3; : 4; : 5) и т.д. Нашу же последовательность формируют квадраты этих чисел, то есть (1^2;: 2^2; : 3^2; : 4^2; : 5^2…) . Таким образом, имеем ответ: (1; : 4; : 9; : 16; : 25…)

Ответ: (1; : 4; : 9; : 16; : 25…)

Отметим, что последовательности в начале статьи заданы именно словесным способом.

— II способ: аналитический (формулой энного члена). Тут значение каждого элемента последовательности вычисляется по некоторой формуле, в которую подставляется порядковый номер этого элемента.

Пример: Последовательность задана формулой: (b_n=frac{n-1}{n^2}). Вычислите первые пять членов этой последовательности.

Решение: Вычислим (b_1). Это первый член последовательности, то есть его порядковый номер (n) равен единице. Тогда его значение равно (b_1=frac{1-1}{1^2} =frac{0}{1}=0).
У второго члена (n=2), то есть его значение равно (b_2=frac{2-1}{2^2} =frac{1}{4}).
Третий ((n=3)):    (b_3=frac{3-1}{3^2} =frac{2}{9}).
Четвертый ((n=4)):     (b_4=frac{4-1}{4^2} =frac{3}{16}).
Пятый ((n=5)):     (b_5=frac{5-1}{5^2} =frac{4}{25}) .
Готово. Можно писать ответ.

Ответ: (b_n= {0; : frac{1}{4}; : frac{2}{9}; : frac{3}{16}; : frac{4}{25}…}).

Обратите внимание, что при таком задании последовательности, значение каждого элемента зависит только от его порядкового номера. И поэтому, если нам нужно вычислить, например, пятнадцатый элемент, мы можем это сделать сразу, не вычисляя предыдущие четырнадцать.

Пример: Последовательность задана формулой: (a_n=8+5n-n^2). Вычислите (a_9).

Решение: Нужно вычислить значение девятого элемента, то есть порядковый номер (n=9). Подставляем в формулу: (a_9=8+5·9-9^2=8+45-81=-28).

Ответ: (a_9=-28).

III способ: рекуррентное соотношение. Звучит страшно, но суть проста – здесь дается начало последовательности (один или несколько первых элементов) и правило, по которому из предыдущего (или нескольких предыдущих) членов последовательности можно вычислить следующий.

Пример: Последовательность задана условиями: (c_1=4), (c_{n+1}=c_n+3). Вычислите первые пять членов этой последовательности.

Решение: Первый член нам известен: (c_1=4).
Второй мы получим, подставив в формулу вместо (n) единицу: (c_{1+1}=c_1+3)
                                                                                                                     (c_2=c_1+3=4+3=7)
Третий ((n=2)):   (c_{2+1}=c_2+3 )
                                 (c_3=c_2+3=7+3=10).

Четвертый ((n=3)):     (c_{3+1}=c_3+3)
                                         (c_4=c_3+3=10+3=13).

Пятый ((n=4)):   (c_{4+1}=c_4+3)
                              (c_5=c_4+3=13+3=16).

Нужные пять элементов вычислены. Теперь можно записывать ответ.

Ответ: (c_n={4; : 7; : 10; : 13; : 16…}).

В этом примере мы по сути получали следующий элемент из предыдущего путем прибавления к предыдущему тройки. Логично, ведь формула (c_{n+1}=c_n+3) требовала именно этого. В ней (c_n) – это предыдущий элемент, а (c_{n+1}) – следующий за ним (ведь его номер на единицу больше).

На практике могут встречаться более сложные формулы, в которых следующий элемент вычисляется из двух, трех или даже большего количества предыдущих.

Пример: У последовательности известны первые два элемента (z_1=2;)   (z_2=5). Так же известна формула следующего элемента (z_{n+2}=3z_{n+1}-z_n). Вычислите значения третьего, четвертого и пятого членов.

Решение: Слева будем писать текущую последовательность, а справа вести вычисления очередного элемента.

Последовательность на данный момент:

Вычисления:

(z_1) (z_2) (z_3) (z_4) (z_5) (…)
(2) (5) ? ? ? (…)

Так как формула дана для элемента с номером (n+2), то чтобы найти (z_3) нужно подставлять вместо (n) единицу:
(z_{1+2}=3z_{1+1}-z_1)
(z_3=3z_2-z_1=3·5-2=13)

(z_1) (z_2) (z_3) (z_4) (z_5) (…)
(2) (5) (13) ? ? (…)

Теперь найдем (z_4), подставив вместо (n) двойку:
(z_{2+2}=3z_{2+1}-z_2)
(z_4=3z_3-z_2=3·13-5=34)
(z_1) (z_2) (z_3) (z_4) (z_5) (…)
(2) (5) (13) (34) ? (…)
Наконец вычисляем (z_5), подставляя вместо (n) тройку:
(z_{3+2}=3z_{3+1}-z_3)
(z_5=3z_4-z_3=3·34-13=89)
(z_1) (z_2) (z_3) (z_4) (z_5) (…)
(2) (5) (13) (34) (89) (…)
Готово. Можно писать ответ.

Ответ: (c_3=13); (c_4=34); (c_5=89).

Важное отличие рекуррентного способа задания последовательности от аналитического – при рекуррентном мы не можем посчитать следующий элемент, не зная предыдущих. То есть, если нам нужно вычислить, например, пятнадцатый элемент, придется сначала вычислить все, что идут до него.

Как определить является ли число элементом последовательности?

Во всех предыдущих примерах мы находили значения элементов последовательности – чему равен третий, пятый или девятый член. Иначе говоря, выясняли какое именно число стоит в последовательности на таком-то месте.

Но в практике встречается также обратная задача – значение известно и надо выяснить, есть ли оно среди элементов некоторой последовательности? А если есть, то на каком месте?

Пример (ОГЭ): Какое из чисел ниже есть среди членов последовательности (a_n=n^2-n):

а) (1)               б) (3)               в) (6)              г) (10) ?

Решение: Из условия задачи понятно, что одно из этих чисел точно является элементом последовательности. Поэтому мы можем просто вычислять элементы по очереди, пока не найдем нужный:

(a_1=1^2-1=0) – мимо.

(a_2=2^2-2=2) – тоже не то.

(a_3=3^2-3=6) – есть!

Нужный элемент найден.

Ответ: (6).

Такой метод решения годится только если заранее известно, что элемент точно в последовательности есть. Потому что если его вдруг там нет – это можно проверять вечность, последовательность ведь бесконечна!

Поэтому в такой ситуации пользуются следующим алгоритмом:

  1. Подставляют заданное число в формулу (n) -го члена вместо (a_n); 

  2. Решая полученное уравнение, находят неизвестное (n); 

  3. Если (n) – натуральное, то данное число — член последовательности.

Пример: Выяснить, является ли число (3) членом последовательности (a_n=)(frac{51+2n}{n+4}) ?

Решение:

(a_n=)(frac{51+2n}{n+4})

Если число (3) – член последовательности, то значит при некотором значении (n), формула (frac{51+2n}{n+4}) должна дать нам тройку. Найдем это (n) по алгоритму выше.
Подставляем тройку вместо (a_n).

(3=)(frac{51+2n}{n+4})

Решаем это уравнение. Умножаем левую и правую части на знаменатель ((n+4)).

(3cdot (n+4)=51+2n)

Получилось линейное уравнение
Раскрываем скобки слева.

(3n+12=51+2n)

Собираем неизвестные слева, числа справа…

(3n-2n=51-12)

…и приводим подобные слагаемые.

(n=39)

Готово. Найденное значение – это то число, которое надо подставить вместо (n) в формулу (frac{51+2n}{n+4}), чтоб получилось тройка (можете проверить это сами). Значит (39)-ый член последовательности равен трем.

Ответ: Да, число (3) является элементом данной последовательности.

Смотри также:
Арифметическая прогрессия
Геометрическая прогрессия

Понравилась статья? Поделить с друзьями:
  • Как найти фоновое изображение
  • Как найти время для удельной теплоты
  • Как найти площадь поперечного сечения медного провода
  • Не удалось восстановить айфон ошибка 1100 как исправить
  • Как найти лого компании