жанель67
23.10.2021 21:51

Строку фибоначчи f(k) для натуральных чисел k определим так: f(1) = 'a', f(2) = 'b', f(k) = f(k - 1) + f(k - 2) при k > 2, где "+" означает конкатенацию строк. требуется найти количество вхождений строки s, состоящей из символов a и b, в строку фибоначчи f(n).

ограничения: длина s от 1 до 25, 1 < = n < = 45.

примечание. длина f(45) равна 1 134 903 170.

входные данные
в первой строке содержится число n, во второй - строка s.

выходные данные
выводится одно число - количество вхождений строки s в строку фибоначчи f(n).

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
nik13243546576879
28.09.2022 02:47

Небольшое наблюдение: если Денис может использовать ровно M лопастей, то он может использовать их так, чтобы четырёхлопастных спиннеров было не больше двух. (Если их три или больше, то каждые три четырёхлопастных спиннера можно поменять на 4 трёхлопастных).

Код (C++)
#include <iostream>
int main() {
    long long M;
    std::cin >> M;
    for (int f = 0; f < 3 && f * 4 <= M; f++) {
        if ((M - f * 4) % 3 == 0) {
            std::cout << (M - f * 4) / 3 << " " << f;
            return 0;
        }
    }
    std::cout << "0 0";
    return 0;
}

0,0(0 оценок)
Ответ:
Sevinch123
28.09.2022 02:47

Небольшое наблюдение: если Денис может использовать ровно M лопастей, то он может использовать их так, чтобы четырёхлопастных спиннеров было не больше двух. (Если их три или больше, то каждые три четырёхлопастных спиннера можно поменять на 4 трёхлопастных).

Код (C++)
#include <iostream>
int main() {
    long long M;
    std::cin >> M;
    for (int f = 0; f < 3 && f * 4 <= M; f++) {
        if ((M - f * 4) % 3 == 0) {
            std::cout << (M - f * 4) / 3 << " " << f;
            return 0;
        }
    }
    std::cout << "0 0";
    return 0;
}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота