mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 15:01:08 +00:00
Added solution for Project Euler problem 125 (#3073)
* Added solution for Project Euler problem 125 * Fixed typos
This commit is contained in:
parent
ec9f6b6467
commit
c83e4b77c5
0
project_euler/problem_125/__init__.py
Normal file
0
project_euler/problem_125/__init__.py
Normal file
56
project_euler/problem_125/sol1.py
Normal file
56
project_euler/problem_125/sol1.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
"""
|
||||
Problem 125: https://projecteuler.net/problem=125
|
||||
|
||||
The palindromic number 595 is interesting because it can be written as the sum
|
||||
of consecutive squares: 6^2 + 7^2 + 8^2 + 9^2 + 10^2 + 11^2 + 12^2.
|
||||
|
||||
There are exactly eleven palindromes below one-thousand that can be written as
|
||||
consecutive square sums, and the sum of these palindromes is 4164. Note that
|
||||
1 = 0^2 + 1^2 has not been included as this problem is concerned with the
|
||||
squares of positive integers.
|
||||
|
||||
Find the sum of all the numbers less than 10^8 that are both palindromic and can
|
||||
be written as the sum of consecutive squares.
|
||||
"""
|
||||
|
||||
|
||||
def is_palindrome(n: int) -> bool:
|
||||
"""
|
||||
Check if an integer is palindromic.
|
||||
>>> is_palindrome(12521)
|
||||
True
|
||||
>>> is_palindrome(12522)
|
||||
False
|
||||
>>> is_palindrome(12210)
|
||||
False
|
||||
"""
|
||||
if n % 10 == 0:
|
||||
return False
|
||||
s = str(n)
|
||||
return s == s[::-1]
|
||||
|
||||
|
||||
def solution() -> int:
|
||||
"""
|
||||
Returns the sum of all numbers less than 1e8 that are both palindromic and
|
||||
can be written as the sum of consecutive squares.
|
||||
"""
|
||||
LIMIT = 10 ** 8
|
||||
answer = set()
|
||||
first_square = 1
|
||||
sum_squares = 5
|
||||
while sum_squares < LIMIT:
|
||||
last_square = first_square + 1
|
||||
while sum_squares < LIMIT:
|
||||
if is_palindrome(sum_squares):
|
||||
answer.add(sum_squares)
|
||||
last_square += 1
|
||||
sum_squares += last_square ** 2
|
||||
first_square += 1
|
||||
sum_squares = first_square ** 2 + (first_square + 1) ** 2
|
||||
|
||||
return sum(answer)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(solution())
|
Loading…
Reference in New Issue
Block a user