Помогите решить задачу пж)

Годовой баланс

В конторе «Рога и Копыта» подходит время подведения годового баланса. В бухгалтерию поступили сведения о том, что, согласно документам, суммарный расход составил а рублей, a суммарный приход – b рублей. Поскольку с реальным положением дел эти цифры все равно не имеют ничего общего, бухгалтер решил реализовать следующую свою идею. Как известно, при наборе чисел на компьютере люди часто вводят цифры в неправильном порядке. Поэтому бухгалтер хочет найти такой способ переставить цифры в числах a и b, чтобы в результате разность a-b (и, соответственно, количество денег, которые он положит к себе в карман), была максимальна, а в случае можно будет сослаться на ошибку секретаря. При этом нельзя забывать о знаке чисел и о том, что ноль не может быть первой цифрой числа, отличного от ноля. Напишите программу, которая поможет бухгалтеру.

Входные данные:

Входной файл INPUT.TXT содержит два целых числа a и b (-109 < a,b < 109).

Выходные данные:

В выходной файл OUTPUT.TXT выведите одно целое число – наибольшую разность чисел, первое из которых может быть получено перестановкой цифр a, а второе – перестановкой цифр b.

Вот мой код:

from math import*
a = int(input())
b = int(input())
s = 0
d = 0
if a > 0:
    z = floor(a / 10)
    x = a - (z * 10)
    #print(z, x, "*")
    if x > z:
        s = x
        d = z
        q = (s * 10) + d 
    if x < z:
        q = (z * 10) + x
if a < 0:
    z = ceil(a / 10)
    x = a - (z * 10)
    print(z, x, "*")
    if x > z:
        s = x
        d = z
        q = (s * 10) + d
    if x < z:
        q = (z * 10) + x
n = 0
m = 0
if b > 0:
    r = floor(b / 10)
    t = b - (r * 10)
    #print(r, t, "**")
    if r > t:
        n = r
        m = t
        w = (n * 10) + m
    if t  > r:
        w = (r * 10) + t
if b < 0:
    r = ceil(b / 10)
    t = b - (r * 10)
    print(r, t, "**")
    if t < r:
        n = r
        m = t
        w = (m * 10) + n
    if r < t:
        w = (r * 10) + t
#if z == 0:
  #  q = a
#if r == 0:
  #  w = b
#print(q, w)
print(q - w)

Ответы (1 шт):

Автор решения: Vladimir Afanasyev

Вот вырожденный случай, когда оба числа > 0.

Сюда добавьте обработку со случаем нуля:

a = list('235')
a.sort(reverse=True) #a -> max
b = list('705')
b.sort()             #b -> min
if (b[0] == '0'):
    b[0], b[1] = b[1], b[0]
a = ''.join(a)
b = ''.join(b)
print(a)
print(b)
print(int(a) - int(b))

output: 532 507 25
→ Ссылка