defrebase(input_base:int,digits:list[int],output_base:int)->list[int]:"""
Convert a number from one base to another.
input_base - The base of the input number (must be >= 2)
digits - A list of integers representing the number in the input base
Each digit must satisfy 0 <= digit < input_base
output_base - The base to convert the number into (must be >= 2)
returns - A list of integers representing the number in the output base.
The most significant digit comes first
raises - ValueError
if input_base or output_base < 2
if any digit is out of range
"""ifinput_base<2:raiseValueError("input base must be >= 2")ifoutput_base<2:raiseValueError("output base must be >= 2")ifnotdigitsorall(d==0fordindigits):return[0]ifany(d<0ord>=input_basefordindigits):raiseValueError("all digits must satisfy 0 <= d < input base")# Convert digits to integer value
value=0fordindigits:value=value*input_base+d# Convert integer value to output_base
result=[]whilevalue:value,rem=divmod(value,output_base)result.append(rem)returnresult[::-1]