2020-11-25

观察数字:
12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:该数字的各个数位之和等于输入的整数。
输入
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。 数字按从小到大的顺序排列。

num = int(input())#输入一个数字
str_x = ""
flge = 0 #标记
def Sm(str_x):
    s=0
    for i in str_x:
        s+=int(i) 
    return int(s)
for i in range(9999,1000000):#本题要求你找到一些5位或6位
    str_x =  list(str(i))
    if str_x == str_x[::-1] and Sm(str_x)== num:
        print(i,end=" ")
        flge = 1
else:
    if flge == 0: #如果没有满足条件的,输出:-1 
        print("-1")         

如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899 499994 589985 598895 679976 688886 697796 769967 778877 787787 796697 859958 868868 877778 886688 895598 949949 958859 967769 976679 985589 994499

运行结果
#数字黑洞6174
比如:4312 3087 8352 6174,经过三次变换,得到6174
样例输入:4312
样例输出:3

num = input()
count = 0
def judge(tep) :
    while len(tep) != 4:
        tep = '0'+ tep
    return tep#形成由这四个数字构成的最小
              #的四位数(如果四个数中含有0,则得到的数不足四位)
base = 0
num = judge(num)
if num.count (num[0])==4:
    print('%s - %s = 0000'%(num,num))
else:
    while base != 6174:
        a1 = ''.join(sorted(num, reverse=True))
        a2 = ''.join(sorted(num))
        base = int(a1) - int(a2)
        count += 1
        num= judge(str(base))
print(count)
posted @ 2020-11-25 22:48  Yang-blackSun  阅读(2)  评论(0编辑  收藏  举报  来源
1 3