PAT——1064. 朋友数

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

输入格式:

输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104

输出格式:

首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

输入样例:

8
123 899 51 998 27 33 36 12

输出样例:

4
3 6 9 26

 1 package com.hone.basical;
 2 
 3 import java.util.Iterator;
 4 import java.util.Scanner;
 5 import java.util.Set;
 6 import java.util.TreeSet;
 7 
 8 /**
 9  * 原题目:https://www.patest.cn/contests/pat-b-practise/1064
10  * @author Xia 朋友数
11  */
12 
13 public class basicalLevel1064friends {
14 
15     public static void main(String[] args) {
16         Scanner in = new Scanner(System.in);
17         int n = in.nextInt();
18         Set<Integer> sum = new TreeSet<>();
19         for (int i = 0; i < n; i++) {
20             int a = in.nextInt();
21             int b = 0;
22             while (a > 0) {
23                 b += a % 10;
24                 a = a / 10;
25             }
26             sum.add(b);
27         }
28 
29         System.out.println(sum.size());
30         Iterator<Integer> numI = sum.iterator();
31         int flag = 0;
32         while (numI.hasNext()) {
33             if (flag != 0) {
34                 System.out.print(" ");
35             }
36             System.out.print(numI.next());
37             flag = 1;
38         }
39     }
40 }
原文地址:https://www.cnblogs.com/xiaxj/p/8005397.html