PAT(B) 1064 朋友数(Java)
2024-08-27 00:06:34
题目描述
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 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
Java代码
/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
7/29/2019, 19:31:23 Accepted 20 1064 Java (openjdk) 96 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] number = br.readLine().split(" "); // n个正整数
boolean[] friends = new boolean[37]; // 朋友证号最大为36
int theNumberOfFriends = 0; // 朋友证号的个数
for (int i = 0; i < n; ++i) {
char[] num = number[i].toCharArray(); // 第i个正整数
int friendNumber = 0; // 第i个正整数的朋友证号
for (int j = 0; j < num.length; ++j) {
friendNumber += num[j] - 48; // 每一位的和
}
if (false == friends[friendNumber]) { // 新的朋友证号
++theNumberOfFriends; // 个数加1
friends[friendNumber] = true; // 设为已存在
}
}
System.out.println(theNumberOfFriends);
for (int i = 0, j = 0; i < 37; ++i) {
if (true == friends[i]) {
System.out.print(i);
if ((++j) < theNumberOfFriends) { // 不是最后一个朋友证号
System.out.print(" "); // 空格分隔
}
}
}
}
}
最新文章
- Python中内置数据类型list,tuple,dict,set的区别和用法
- centos7设置网关
- ubuntu host备份 ubuntu无法解析主机
- EXCEL文件格式不匹配,或者已经损坏,除非信任来源
- 【BZOJ-2648&;2716】SJY摆棋子&;天使玩偶 KD Tree
- Best Time to Buy and Sell Stock | &; || &; III
- JSTL.带标签体的标签,方法和例子
- 转载:CSS3 圆角(border-radius)
- phpcms源码跟踪(1)
- JSON基础学习
- 平移关节(Prismatic Joint)
- 【转】centos安装vim7.4
- IDEA springboot 项目静态文件修改不更新的问题
- 【Zuul】Zuul过滤器参考资料
- luogu P2000 拯救世界
- 13机器学习实战之PCA(1)
- hadoop的namenode启动失败
- day07--字符编码、文件处理
- ubuntu查找命令比较
- oracle增加sequence