在Python中求正、负余数问题

请问图二的程序为什么解决不了图一的问题,图三的程序为什么能够得到正确答案,有什么更好的办法吗?

img

img

img

区别在于,如果n是负数,除以正整数100得到的商和余数都不对。比如-3215,除以100得到的商是-33,余数是85。
个人认为更加简单的办法就是将4位整数n取绝对值n2,然后得到两个2位整数a,b,如果原来的4位整数n是负数,则a和b也取负,后面计算都是一样的,就不需要特意为了负数修改了。

def main():
    n = int(input("input n: "))
    n2 = abs(n)
    a, b = n2//100, n2%100
    if n<0: a, b = -a, -b
    print("{:d} + {:d} = {:d}".format(a,b,a+b))
    print("{:d} - {:d} = {:d}".format(a,b,a-b))
    print("{:d} * {:d} = {:d}".format(a,b,a*b))
    print("{:d} / {:d} = {:2f}".format(a,b,a/b))
    print("{:d} // {:d} = {:d}".format(a,b,a//b))
    print("{:d} % {:d} = {:d}".format(a,b,a%b))

if __name__ == "__main__":
    main()