4 / 6 / 1
Регистрация: 16.04.2022
Сообщений: 139

Роллер

11.05.2022, 22:24. Показов 2135. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начинается финальная схватка с демонами!

Для более эффективного наступления Рей решил использовать своё собственное изобретение — автомат, стреляющий пулями, наносящими урон демонам от 1 до 5 по его собственной шкале. Автомат стреляет очередями, каждая из которых содержит
n
пуль. После каждой очереди его надо перезаряжать. У автомата есть особенность: его нельзя заряжать так, чтобы получались такие комбинации рядом находящихся пуль, наносящих урон (3, 4), (3, 5), (5, 4), (5, 5). Рею нужно знать, сколькими способами можно корректно зарядить автомат.


------------------------
Входные данные:

В первой и единственной строке входных данных задаётся целое число
1 < n < 11258999000000
количество патронов в очереди автомата Рея.
-------------------------


Выходные данные
Выведите ответ на задачу по модулю 999999937.
-------------------


Примеры
входные данные
1
выходные данные
5
входные данные
2
выходные данные
21
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2022, 22:24
Ответы с готовыми решениями:

Как настроить роллер на клавиатуре aula F75?
Купил aula f75 и не знаю как настроить роллер для звука, сейчас он изменяет режим и яркость клавиатуры. Помогите пожалуйста


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
11.05.2022, 23:59
Возможно...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def speed(x, n, mod):
    if n == 0:
        return 1
    elif n % 2 == 0:
        return (speed(x, n // 2, mod) ** 2) % mod
    return (speed(x, n - 1, mod) * x) % mod 
        
f = 5**.5
a1 = (1 + f)/2
a2 = (f - 1)/2
n = 11258999000000
#n = int(input())
n = (n-1)*3 + 5
k = 999999937
an = (speed(a1,n,k) - speed(a2,n,k))/f
print(round(an))
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.05.2022, 01:31
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def dot(m1, m2, p):
#умножение матрицы m1 на m2 в Z_p
    return [
        [sum(x * y for x, y in zip(m1_row, m2_col)) % p for m2_col in zip(*m2)] for m1_row in m1
    ]
 
def get_one(n):
#возвращает единичную матрицу n x n
    return [[1 if i==j else 0 for j in range(n)] for i in range(n)]
 
def mod_exp(m, b, p):
#быстроу возведение матрицы m в степень b в Z_p
    if b == 0:
        return get_one(len(m[0])) 
    if b % 2 == 1:
        return dot(m, mod_exp(m, b-1, p), p) 
    m_2 = mod_exp(m, b/2, p)
    return dot(m_2, m_2, p)
 
p = 999999937
step = [[3, 2, 2], [1, 1, 1], [1, 0, 0]]
n = 11258999000000
#n = int(input())
print( sum( row[0] for row in mod_exp(step, n, p) ) % p )
Gdez, результаты наши, увы, не совпадают

Добавлено через 23 минуты
Посмотрел ваш код - вы используете то, что последовательность - Фибоначчи через 3, начиная с пятого. У меня немного другая логика, но приводит к тому же ответу.
Только вот у вас закралась помарка - с делением в конечных полях нужно быть чуть аккуратнее.

Добавлено через 8 минут
Наверное, формулу Бине не получится прикрутить. Придется всё же использовать матричное умножение. Но поскольку умножать будем матрицы 2х2 - это уже оптимизация моего решения))
1
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
12.05.2022, 04:41
Red white socks,
Только вот у вас закралась помарка - с делением в конечных полях
Поэтому "возможно"...
Как то разбирали тут, что формула для "n"-го члена не корректна для некоторых "n"...
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.05.2022, 05:21
Цитата Сообщение от Gdez Посмотреть сообщение
Как то разбирали тут, что формула для "n"-го члена не корректна для некоторых "n"...
Формула Бине работает для всех n. Даже без а_2^n: https://www.cyberforum.ru/cgi-bin/latex.cgi?a_2<1, \, a_2^n \approx 0. Поэтому его можно безболезненно выкинуть, если затем округлять до ближайшего целого.
Но не в модулярной арифметике. Деление на целое здесь есть - умножение на обратный. Но делить/умножать на иррациональное число, увы, практически невозможно.

Добавлено через 11 минут
Цитата Сообщение от Red white socks Посмотреть сообщение
Формула Бине работает для всех n
Опять тупить начинаю. Конечно же для больших n требуются вычисления с очень большой точностью, что сводит на нет ее практическое применение.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.05.2022, 06:39
Python
1
2
3
4
5
6
7
8
9
10
11
12
def foo(n):
    if n == 0:
        return (0, 1)
    a, b = foo(n // 2)
    if n % 2:
        return ((a * a + b * b) % m, (2 * a * b + b * b) % m)
    return ((2 * a * b - a * a) % m, (a * a + b * b) % m)
 
 
n = 11258999000000
m = 999999937
print(foo(3 * n + 2)[0])
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
12.05.2022, 07:59
Цитата Сообщение от Red white socks Посмотреть сообщение
Наверное, формулу Бине не получится прикрутить.
- загляните
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.05.2022, 08:21
Catstail, заглянул. Остался вопрос как это делать в модулярной арифметике
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
12.05.2022, 08:25
Red white socks, подумаю...
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
12.05.2022, 08:40
все равно логарифм.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.05.2022, 09:08
Цитата Сообщение от Catstail Посмотреть сообщение
Red white socks, подумаю...
Вроде проходит. Но надо проверить. Вечером после работы попробую сделать, если не опередите

Добавлено через 12 минут
Цитата Сообщение от eaa Посмотреть сообщение
все равно логарифм.
С этим никто не спорит ...
Но есть вопрос.
Мое решение такое:
a(n) - количество последовательностей длины n, оканчивающихся на 1, 2 или 4
b(n) - количество последовательностей длины n, оканчивающихся на 3
c(n) - количество последовательностей длины n, оканчивающихся на 5
Тогда искомое f(n) = a(n)+b(n)+c(n)
a(n+1)=3a(n)+2b(n)+2c(n)
b(n+1)=a(n)+b(n)+c(n)
c(n+1)=a(n)

Здесь с математикой я остановился и перешел к коду.
Есть ли доказательство, что https://www.cyberforum.ru/cgi-bin/latex.cgi?f(n)=F_{3n+2} напрямую.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru