Python神奇的等式

大贤者福尔在研究数学问题时,发现有一些自然数能够构成一个形如下式的等式,颇为神奇。

在这里插入图片描述

其中,x,(0≤i≤9)为0−9之间的数字,且各不相同。福尔想知道给定N的值时,有多少数能够满足这种关系?

输入

输入数据有若干行,每行包括单个整数N(2≤N≤79)。

输出

对每行输入数据,先在单独的行中输出如Case x:的测试样例信息,x为测试样例编号,从1开始。若存在满足条件的数值,则分别按分母递减的顺序依次在独立的行中输出各个等式;若不存在满足条件的数,则在单独的行中输出No such numbers.。每个输出结果的前面保留4个空格。

示例输入

68 69

示例输出

Case 1: 98736/01452=68
Case 2: No such numbers

Python:

def has_duplicate(string):
    return len(set(string)) == len(string)
def pan(string):
    if len(str(string)) < 5:
        return '0' + str(string)
    else:
        return str(string)
n = int(input())
count = 0
while n:
    try:
        count += 1
        cou = 0
        print("Case ",count,":",sep="")
        for digits in range(59876,1233,-1):
            if has_duplicate(str(digits)):
                num = digits
                denom = n * num
                nums = pan(num)
                string = nums + str(denom)
                if 10000 <= denom <= 99999 and has_duplicate(string):
                    cou += 1
                    print(f"    {denom}/{nums}={n}")
        if cou == 0:
            print("    No such numbers")
        n = int(input())
    except:
        break

你可能感兴趣的:(Pyhton程序设计,python,开发语言,数据结构,算法)