题目
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。
输入格式: 输入第一行给出正整数 N。随后一行给出 N 个正整数,数字间以空格分隔。题目保证所有数字小于 10 4 。
输出格式: 首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。
输入样例: 8 123 899 51 998 27 33 36 12 结尾无空行 输出样例: 4 3 6 9 26 结尾无空行
解题思路
count = int(input()) # count = int("8") countList = input().split() # countList = "123 899 51 998 27 33 36 12".split() resDic = dict() for each in countList: numList = list(map(int, list(each))) sumNo = sum(numList) sumNoStr = str(sumNo) if sumNoStr in resDic:#如果存在朋友数就数量加1 resDic[sumNoStr] += 1 else: resDic[sumNoStr] = 1 resList = []#把符合朋友数的拿出来转成Int for key,val in resDic.items(): # if val >= 2: resList.append(int(key)) resList.sort()#进行排序 # print(resList) print(str(len(resList))) print(" ".join(map(str, resList)))