Проект Эйлера

Проект Эйлера. Задача 26 «Обратные циклы»

Проект Эйлера: Условие

Единичная дробь имеет 1 в числителе. Десятичные представления единичных дробей со знаменателями от 2 до 10 даны ниже:

1/2 = 0.5
1/3 =  0.(3)
1/4 = 0.25
1/5 = 0.2
1/6 = 0.1(6)
1/7 = 0.(142857)
1/8 = 0.125
1/9 = 0.(1)
1/10 = 0.1

Где 0.1(6) значит 0.166666…, и имеет повторяющуюся последовательность из одной цифры. Заметим, что 1/7 имеет повторяющуюся последовательность из 6 цифр.

Найдите значение d < 1000, для которого 1/d в десятичном виде содержит самую длинную повторяющуюся последовательность цифр.

Решение:

import itertools


def compute():
    ans = max(range(1, 1000), key=reciprocal_cycle_len)
    return str(ans)


def reciprocal_cycle_len(n):
    seen = {}
    x = 1
    for i in itertools.count():
        if x in seen:
     return i - seen[x]
 else:
     seen[x] = i
     x = x * 10 % n


if __name__ == "__main__":
     print(compute())
admin

Recent Posts

Как проверить существование файла с помощью Python

В Python проверка существования файла перед попыткой его использования является обычной задачей, особенно если вы…

18 часов ago

Абсолютное значение числа в Python

При анализе данных часто требуется быстро найти абсолютное значение набора чисел. Для выполнения этой задачи…

1 неделя ago

Библиотека Pydantic: валидация данных на Python

Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…

2 недели ago

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

3 недели ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

4 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

1 месяц ago