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