Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 10 марта 2026 12:53

Заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи. Используйте логическую функцию, которая определяет, является ли переданное ей число числом Фибоначчи. Пример: Массив А: 12 13 85 34 47 Массив B: 13 34

Ответ нейросети

10 марта 2026 12:53

Ниже детальное решение задачи "заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи" с пояснениями и примерами. Учитываю цель ученика — понять материал, стиль и сложность под класс 10 информатики.

Задача внутри задачи

  • Проверить, является ли данное число числом Фибоначчи.
  • Заполнить массив A случайными числами.
  • В массив B собрать только те элементы A, которые являются числами Фибоначчи.
  • Пример: A = [12, 13, 85, 34, 47] → B = [13, 34] (13 и 34 — числа Фибоначчи; 85 и 12,47 — нет).
  1. Как понять, является ли число Фибоначчи
  • Простое свойство: n – число Фибоначчи тогда и только тогда, когда одно из чисел 5n^2 + 4 или 5n^2 - 4 является полным квадратом.
  • Это работает для неотрицательных целых чисел. Для отрицательных чисел считаем их не Фибоначчи.
  • Важно помнить, что 0 тоже является числом Фибоначчи: последовательность начинается как 0, 1, 1, 2, 3, 5, 8, ...
  1. Пошаговый план решения
  • Шаг 1. Реализовать функцию is_fibonacci(x), которая возвращает True, если x — Фибоначчи, иначе False.
  • Шаг 2. Сгенерировать массив A из n случайных целых чисел в заданном диапазоне.
  • Шаг 3. Пройтись по A и собрать в массив B только те элементы, для которых is_fibonacci возвращает True.
  • Шаг 4. Вывести A и B.
  • Временная сложность: O(n) для проверки каждого элемента и фильтрации, доп. место: O(n) для хранения массивов A и B.
  1. Реализация на Python (почему именно Python — часто встречается на занятиях по информатике в школе, легко читается)

Код Python (с подробными комментариями)

import random import math

Проверка, является ли число вершиной Фибоначчи (неотрицательное число)

def is_perfect_square(x): if x < 0: return False s = int(math.sqrt(x)) return s * s == x

def is_fibonacci(n): if n < 0: return False # число Фибоначчи, если 5*n^2 ± 4 — квадрат return is_perfect_square(5 * n * n + 4) or is_perfect_square(5 * n * n - 4)

Генерация массива A случайными числами и отбор Фибоначчи в B

def fill_and_select(n, lo=0, hi=99): A = [random.randint(lo, hi) for _ in range(n)] B = [x for x in A if is_fibonacci(x)] return A, B

Пример использования

n = 5 # можно изменить количество элементов A, B = fill_and_select(n, 0, 99) print("A:", A) print("B:", B)

Объяснение кода

  • is_fibonacci(n) реализует проверку по формуле 5n^2 ± 4. Для неотрицательных n она корректно возвращает True, если n — Фибоначчи.
  • is_perfect_square(x) проверяет, является ли x квадратом целого числа.
  • fill_and_select генерирует массив A случайными числами в диапазоне [lo, hi] и формирует B как подмножество A, где элементы удовлетворяют is_fibonacci.

Пример работы

  • Пусть A = [12, 13, 85, 34, 47]. is_fibonacci возвращает True для 13 и 34, и False для остальных, поэтому B = [13, 34].
  1. Реализация на C++

Код C++, близкий к стилю школьной информатики (с использованием генератора случайных чисел)

#include <bits/stdc++.h> using namespace std;

bool isPerfectSquare(long long x) { if (x < 0) return false; long long r = sqrt((long double)x); // корректируем возможные погрешности округления while (r * r < x) ++r; while (r * r > x) --r; return r * r == x; }

bool isFibonacci(long long n) { if (n < 0) return false; long long a = 5 * n * n + 4; long long b = 5 * n * n - 4; return isPerfectSquare(a) || isPerfectSquare(b); }

int main() { ios::sync_with_stdio(false); cin.tie(nullptr);

int n = 5; // можно изменить размер массива A
vector<int> A(n);

// генератор случайных чисел
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, 99);

for (int i = 0; i < n; ++i) A[i] = dis(gen);

vector<int> B;
for (int x : A) {
    if (isFibonacci(x)) B.push_back(x);
}

// Вывод
cout << "A: ";
for (int i = 0; i < n; ++i) {
    if (i) cout << ' ';
    cout << A[i];
}
cout << "\nB: ";
for (size_t i = 0; i < B.size(); ++i) {
    if (i) cout << ' ';
    cout << B[i];
}
cout << "\n";

return 0;

}

Объяснение кода

  • isFibonacci(n) работает так же, как и в Python: n считается Фибоначчи, если 5n^2+4 или 5n^2-4 — квадрат.
  • isPerfectSquare(x) аккуратно проверяет квадратность числа, учитывая возможные дробные округления при работе с sqrt.
  • Генератор случайных чисел создаёт массив A, а B собирается из элементов A, которые удовлетворяют isFibonacci.
  • Временная сложность: O(n). Память: O(n) для хранения A и B.
  1. Дополнительные заметки
  • Можно дополнительно оптимизировать: сначала найти максимум maxA в A и построить множество чисел Фибоначчи до maxA, затем проверить принадлежность каждого элемента A этому множеству. Это может быть полезно, если диапазон значений большой и нужно проверить много элементов.
  • Обработка отрицательных чисел: для них функция is_fibonacci вернет False (они не Фибоначчи по определению в большинстве задач).

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

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи. Используйте логическую функцию, которая определяет, является ли переданное ей число числом Фибоначчи. Пример: Массив А: 12 13 85 34 47 Массив B: 13 34
Ниже детальное решение задачи "заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи" с пояснениями и примерами. Учитываю цель ученика — понять материал, стиль и сложность под класс 10 информатики. Задача внутри задачи - Проверить, является ли данное число числом Фибоначчи. - Заполнить массив A случайными числами. - В массив B собрать только те элементы A, которые являются числами Фибоначчи. - Пример: A = [12, 13, 85, 34, 47] → B = [13, 34] (13 и 34 — числа Фибоначчи; 85 и 12,47 — нет). 1) Как понять, является ли число Фибоначчи - Простое свойство: n – число Фибоначчи тогда и только тогда, когда одно из чисел 5n^2 + 4 или 5n^2 - 4 является полным квадратом. - Это работает для неотрицательных целых чисел. Для отрицательных чисел считаем их не Фибоначчи. - Важно помнить, что 0 тоже является числом Фибоначчи: последовательность начинается как 0, 1, 1, 2, 3, 5, 8, ... 2) Пошаговый план решения - Шаг 1. Реализовать функцию is_fibonacci(x), которая возвращает True, если x — Фибоначчи, иначе False. - Шаг 2. Сгенерировать массив A из n случайных целых чисел в заданном диапазоне. - Шаг 3. Пройтись по A и собрать в массив B только те элементы, для которых is_fibonacci возвращает True. - Шаг 4. Вывести A и B. - Временная сложность: O(n) для проверки каждого элемента и фильтрации, доп. место: O(n) для хранения массивов A и B. 3) Реализация на Python (почему именно Python — часто встречается на занятиях по информатике в школе, легко читается) Код Python (с подробными комментариями) import random import math # Проверка, является ли число вершиной Фибоначчи (неотрицательное число) def is_perfect_square(x): if x < 0: return False s = int(math.sqrt(x)) return s * s == x def is_fibonacci(n): if n < 0: return False # число Фибоначчи, если 5*n^2 ± 4 — квадрат return is_perfect_square(5 * n * n + 4) or is_perfect_square(5 * n * n - 4) # Генерация массива A случайными числами и отбор Фибоначчи в B def fill_and_select(n, lo=0, hi=99): A = [random.randint(lo, hi) for _ in range(n)] B = [x for x in A if is_fibonacci(x)] return A, B # Пример использования n = 5 # можно изменить количество элементов A, B = fill_and_select(n, 0, 99) print("A:", A) print("B:", B) Объяснение кода - is_fibonacci(n) реализует проверку по формуле 5n^2 ± 4. Для неотрицательных n она корректно возвращает True, если n — Фибоначчи. - is_perfect_square(x) проверяет, является ли x квадратом целого числа. - fill_and_select генерирует массив A случайными числами в диапазоне [lo, hi] и формирует B как подмножество A, где элементы удовлетворяют is_fibonacci. Пример работы - Пусть A = [12, 13, 85, 34, 47]. is_fibonacci возвращает True для 13 и 34, и False для остальных, поэтому B = [13, 34]. 4) Реализация на C++ Код C++, близкий к стилю школьной информатики (с использованием генератора случайных чисел) #include using namespace std; bool isPerfectSquare(long long x) { if (x < 0) return false; long long r = sqrt((long double)x); // корректируем возможные погрешности округления while (r * r < x) ++r; while (r * r > x) --r; return r * r == x; } bool isFibonacci(long long n) { if (n < 0) return false; long long a = 5 * n * n + 4; long long b = 5 * n * n - 4; return isPerfectSquare(a) || isPerfectSquare(b); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n = 5; // можно изменить размер массива A vector A(n); // генератор случайных чисел std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 99); for (int i = 0; i < n; ++i) A[i] = dis(gen); vector B; for (int x : A) { if (isFibonacci(x)) B.push_back(x); } // Вывод cout << "A: "; for (int i = 0; i < n; ++i) { if (i) cout << ' '; cout << A[i]; } cout << "\nB: "; for (size_t i = 0; i < B.size(); ++i) { if (i) cout << ' '; cout << B[i]; } cout << "\n"; return 0; } Объяснение кода - isFibonacci(n) работает так же, как и в Python: n считается Фибоначчи, если 5n^2+4 или 5n^2-4 — квадрат. - isPerfectSquare(x) аккуратно проверяет квадратность числа, учитывая возможные дробные округления при работе с sqrt. - Генератор случайных чисел создаёт массив A, а B собирается из элементов A, которые удовлетворяют isFibonacci. - Временная сложность: O(n). Память: O(n) для хранения A и B. 5) Дополнительные заметки - Можно дополнительно оптимизировать: сначала найти максимум maxA в A и построить множество чисел Фибоначчи до maxA, затем проверить принадлежность каждого элемента A этому множеству. Это может быть полезно, если диапазон значений большой и нужно проверить много элементов. - Обработка отрицательных чисел: для них функция is_fibonacci вернет False (они не Фибоначчи по определению в большинстве задач). Если хотите, могу привести конкретный пример с вашим набором A и показать точный результат B или запустить небольшой тест с вашим диапазоном значений.