Have Fun with Numbers-python

自測-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 = '')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章