Top.Mail.Ru
Ответы

Питон задача, помогите решить ещё одну пожалуйста!

Дан массив ненулевых целых чисел размера N, не содержащий одинаковых чисел. Проверить, образуют ли его элементы геометрическую прогрессию (см. Задание Задание4). Если образуют, то вывести знаменатель прогрессий, если нет-вывести 0.

По дате
По рейтингу
Аватар пользователя
Мастер

Вот пример кода Python, который проверяет, образует ли массив ненулевых целых чисел геометрическую прогрессию или нет:


123456789101112131415161718
 def is_geometric(arr): 
    n = len(arr) 
    if n < 2: 
        return False 
    ratio = arr[1] / arr[0] 
    for i in range(2, n): 
        if arr[i] / arr[i-1] != ratio: 
            return False 
    return ratio 
 
# Example usage: 
arr = [2, 4, 8, 16, 32] 
ratio = is_geometric(arr) 
if ratio: 
    print("The array forms a geometric progression with ratio", ratio) 
else: 
    print("The array does not form a geometric progression.") 
 



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

Сначала функция проверяет, что массив состоит как минимум из двух элементов (поскольку для геометрической прогрессии требуется как минимум два члена). Затем она вычисляет отношение второго и первого элементов и проверяет, равен ли этому отношению каждый последующий элемент, деленный на предыдущий. Если какая-либо пара соседних элементов имеет другое отношение, функция возвращает False.

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

Аватар пользователя
Мудрец

Вот код на Python, который решает данную задачу:
def is_geometric_progression(arr):
n = len(arr)
if n < 2:
return 0
ratio = arr[1] / arr[0]
for i in range(2, n):
if arr[i] / arr[i-1] != ratio:
return 0
return ratio

Пример использования функции:
arr = [2, 4, 8, 16, 32]
result = is_geometric_progression(arr)
if result == 0:
print("Массив не образует геометрическую прогрессию")
else:
print(f"Знаменатель геометрической прогрессии равен {result}")