Перевод числа в двоичную систему счисления, код на python выводит неверный ответ
я написала код по задаче:
Напишите программу, которая по данным числам A и n записывает
представление числа A в n-разрядном двоичном дополнительном коде.
Входные данные
Первая строка входных данных содержит число A, вторая строка –– число
n, при этом 2 ≤ n ≤ 16, −2^n−1 ≤ A ≤ (2^n−1)−1 .
Выходные данные
Программа должна вывести строку из n символов, содержащих запись числа
A в n-разрядном двоичном дополнительном коде, первый символ –– старший
знаковый разряд.
Примеры
входные данные
3
8
выходные данные
00000011
входные данные
57
8
выходные данные
00111001
Мой код:
def binar(x, n):
ans=""
while x>0:
ans+=str(x%2)
x//=2
ans="0"*(n-len(ans))+(ans[::-1])
return ans
A=int(input())
n=int(input())
print(binar(A, n))
Но на некоторых тестах проверяющей системы (они неизвестны) он выдаёт неправильный ответ, помогите пожалуйста!!!
Источник: Stack Overflow на русском