Skip to content

Hacktoberfest 2020 - Style Improvements for project_euler/problem_26 #2958

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Oct 8, 2020
28 changes: 23 additions & 5 deletions project_euler/problem_26/sol1.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,38 @@
"""
Euler Problem 26
https://projecteuler.net/problem=26

Problem Statement:

A unit fraction contains 1 in the numerator. The decimal representation of the
unit fractions with denominators 2 to 10 are given:

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
Where 0.1(6) means 0.166666..., and has a 1-digit recurring cycle. It can be
seen that 1/7 has a 6-digit recurring cycle.

Find the value of d < 1000 for which 1/d contains the longest recurring cycle
in its decimal fraction part.
"""


def find_digit(numerator: int, digit: int) -> int:
def solution(numerator: int = 1, digit: int = 1000) -> int:
"""
Considering any range can be provided,
because as per the problem, the digit d < 1000
>>> find_digit(1, 10)
>>> solution(1, 10)
7
>>> find_digit(10, 100)
>>> solution(10, 100)
97
>>> find_digit(10, 1000)
>>> solution(10, 1000)
983
"""
the_digit = 1
Expand All @@ -35,8 +53,8 @@ def find_digit(numerator: int, digit: int) -> int:
return the_digit


# Tests
if __name__ == "__main__":
import doctest

doctest.testmod()
print(solution(digit=int(str(input()).strip())))