Editorial for The Cubic End
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
import sys
def is_solution(n, ending, number):
if len(number) != n:
return False
number = int(''.join(map(str, number)))
return (number**3%(10**n))==ending
def extend_solution(n, number):
if len(number) >= n:
return
else:
for n in range(10):
yield [n] + number
def test(ending, number):
n = len(number)
number = int(''.join(map(str, number)))
return (number**3%(10**n))==(ending%(10**n))
def backtracking(n, ending, number):
if is_solution(n, ending, number):
return int(''.join(map(str, number[1:])))
else:
for new_number in extend_solution(n,number):
if test(ending, new_number):
result = backtracking(n, ending, new_number)
if result is not False:
return result
return False
_cases = sys.stdin.readline()
for n_str in sys.stdin.readlines():
n = int(n_str)
print(backtracking(len(n_str), n, []))
Comments