Have Fun with Numbers-python

    技术2022-07-20  79

    自测-4 Have Fun with Numbers (20分)

    Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a different permutation. Check to see the result if we double it again!

    Now you are suppose to check if there are more numbers with this property. That is, double a given number with k digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.

    Input Specification:

    Each input contains one test case. Each case contains one positive integer with no more than 20 digits.

    Output Specification:

    For each test case, first print in a line "Yes" if doubling the input number gives a number that consists of only a permutation of the digits in the original number, or "No" if not. Then in the next line, print the doubled number.

    Sample Input:

    1234567899

    Sample Output:

    Yes 2469135798

    思路:

    1.将原数字和计算后数字放进列表中,排序,比较两个列表。(但是好奇怪‘long可以,答案是No,位数不匹配’这个测试点过不去,希望有大佬解答)

    2.原数字和计算后数字转换成字符串,利用collection.Counter来计算字符串中不同字符出现的次数,比较结果

    源代码:

    # -*- coding: utf-8 -*- """ Created on Thu Jul 2 09:24:45 2020 @author: Lenovo """ from collections import Counter def Input(): #输入 k = int(input()) return k def Double(num): #乘法计算 result = num * 2 return result def Devide(num): #整数转换成列表 list0 = list(map(int,str(num))) return list0 def sort(list1): #列表中排序 leng = len(list1)-1 for i in range (leng, 0, -1): for j in range(0, i): if list1[j]>list1[j+1]: list1[j], list1[j+1] = list1[j+1], list1[j] return list1 def Tonum(l): #列表转换成整数 n = int(''.join(map(str,l))) return n def compare(a, b): #比较两个数 if a==b: return 1 else: return 0 def option(num): A = Devide(num) A1 = sort(A) #a = Tonum(A1) return A1 if __name__ == '__main__': num = Input() result = Double(num) #a = option(num) #b = option(result) #flag = compare(a,b) #if flag == 1: # print('Yes') #else: # print('No') a = str(num) b = str(result) a1 = Counter(a) b1 = Counter(b) if a1 == b1 : print('Yes') else: print('No') print(result, end = '')

     

    Processed: 0.009, SQL: 9