TheAlgorithms-Python
84 строки · 3.2 Кб
1"""
2Project Euler Problem 8: https://projecteuler.net/problem=8
3
4Largest product in a series
5
6The four adjacent digits in the 1000-digit number that have the greatest
7product are 9 × 9 × 8 × 9 = 5832.
8
973167176531330624919225119674426574742355349194934
1096983520312774506326239578318016984801869478851843
1185861560789112949495459501737958331952853208805511
1212540698747158523863050715693290963295227443043557
1366896648950445244523161731856403098711121722383113
1462229893423380308135336276614282806444486645238749
1530358907296290491560440772390713810515859307960866
1670172427121883998797908792274921901699720888093776
1765727333001053367881220235421809751254540594752243
1852584907711670556013604839586446706324415722155397
1953697817977846174064955149290862569321978468622482
2083972241375657056057490261407972968652414535100474
2182166370484403199890008895243450658541227588666881
2216427171479924442928230863465674813919123162824586
2317866458359124566529476545682848912883142607690042
2424219022671055626321111109370544217506941658960408
2507198403850962455444362981230987879927244284909188
2684580156166097919133875499200524063689912560717606
2705886116467109405077541002256983155200055935729725
2871636269561882670428252483600823257530420752963450
29
30Find the thirteen adjacent digits in the 1000-digit number that have the
31greatest product. What is the value of this product?
32"""
33
34import sys
35
36N = (
37"73167176531330624919225119674426574742355349194934"
38"96983520312774506326239578318016984801869478851843"
39"85861560789112949495459501737958331952853208805511"
40"12540698747158523863050715693290963295227443043557"
41"66896648950445244523161731856403098711121722383113"
42"62229893423380308135336276614282806444486645238749"
43"30358907296290491560440772390713810515859307960866"
44"70172427121883998797908792274921901699720888093776"
45"65727333001053367881220235421809751254540594752243"
46"52584907711670556013604839586446706324415722155397"
47"53697817977846174064955149290862569321978468622482"
48"83972241375657056057490261407972968652414535100474"
49"82166370484403199890008895243450658541227588666881"
50"16427171479924442928230863465674813919123162824586"
51"17866458359124566529476545682848912883142607690042"
52"24219022671055626321111109370544217506941658960408"
53"07198403850962455444362981230987879927244284909188"
54"84580156166097919133875499200524063689912560717606"
55"05886116467109405077541002256983155200055935729725"
56"71636269561882670428252483600823257530420752963450"
57)
58
59
60def solution(n: str = N) -> int:
61"""
62Find the thirteen adjacent digits in the 1000-digit number n that have
63the greatest product and returns it.
64
65>>> solution("13978431290823798458352374")
66609638400
67>>> solution("13978431295823798458352374")
682612736000
69>>> solution("1397843129582379841238352374")
70209018880
71"""
72
73largest_product = -sys.maxsize - 1
74for i in range(len(n) - 12):
75product = 1
76for j in range(13):
77product *= int(n[i + j])
78if product > largest_product:
79largest_product = product
80return largest_product
81
82
83if __name__ == "__main__":
84print(f"{solution() = }")
85