TheAlgorithms-Python
81 строка · 3.1 Кб
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
34from functools import reduce35
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
73return max(74# mypy cannot properly interpret reduce75int(reduce(lambda x, y: str(int(x) * int(y)), n[i : i + 13]))76for i in range(len(n) - 12)77)78
79
80if __name__ == "__main__":81print(f"{solution() = }")82