@Markzzz

Можно ли переписать код с питона на C++?

Дан код на питоне, но числа для вычисления в нем слишком большие и выполнение не заканчивается. Я попробовал переписать его на язык Cobra, но там в операции вычисления степени мне выдает NaN и дальнейшие вычисления бессмысленны. Код вроде простой, но я совсем не знаю плюсов и представления чисел в них, помогите если не сложно перевести его
def fib(n):
    a = 0
    b = 1
    for _ in range(n):
        a, b = b, a + b
    return a


def power(x, e, n):
    return pow(x, e) % n


def get_hash_sum():
    n = power(power(13371337, 0xdeadbeeffeeddeef, 0xffffffffffffffff), 0xcafecafeabcd, 0xfffffff)
    res = 0
    while n > 0:
        res += fib(n)
        n = n // 2 if n % 2 == 0 else (n - 1) // 2

    return res & 0xffffffffffffffff


def main():
    print(f'Flag is Course{{{get_hash_sum()}}}')


if __name__ == '__main__':
    main()
  • Вопрос задан
  • 215 просмотров
Решения вопроса 1
DevMan
@DevMan Куратор тега Python
да, переписать можно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mezastel
@mezastel
Финансовая математика, программирование
Тут есть одна проблема, насколько я помню код на питоне использует целочисленные значения неограниченных размеров, в то время как на С++ требуется явно указать размер переменной. Возможно для реализации кода выше, в частности возведения в большую степень по модулю (как у вас) придётся писать совершенно другую реализацию. Ну или брать какую-то библиотеку которая работает с arbitrary-precision arithmetic.
Ответ написан
@AVKor
Можно ли переписать код с питона на C++?

Разрешаю переписать. Даже на языке ассемблера.
Ответ написан
Reged1t
@Reged1t
Учу Python и пишу на нëм, а также делаю ботов в дс
Можно, просто покопайся в доках питона и c++, сравни def fib(b)

С
func fib(b)

Подумай и готово.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы