1064. 朋友数(20)
来源:互联网 发布:江苏国税普通发票软件 编辑:程序博客网 时间:2024/06/09 21:07
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如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
思路:看见这道题,时间限制在400ms ,于是使用java解决。
这道题非常简单,但是还是踩到了雷,所以记录一下。
用list来检查是否含有相同的朋友数,没有就添加,同时将不同朋友数的总数加一,最后将list里的数据转到数组中,在转换的时候进行排序,考虑到这些数不多, 所以用了插入排序。
import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Test{ public static void main(String [] args){ Scanner r = new Scanner(System.in); int n = r.nextInt(); List<Integer> list = new ArrayList<>(); int sum = 0; for(int i = 0; i < n; i++) { int j = r.nextInt(); int k = 0; while(j > 0) { k += j%10; j /= 10; } if(!list.contains(k))//检查这个朋友数是否已经存在 { list.add(k);//不存在便添加 sum++; } } int[] k = new int[sum]; int j = 0; for(int i:list) { for(int m = 0; m < sum; m++)//插入排序,按数字从大到小排,因为数组中的数默认都是0,所以按从小到大排根本不会插入进去。 { if(k[m] < i) { for(int y = sum - 1; y > m; y--) k[y] = k[y-1]; k[m] = i; break; } } } System.out.println(sum); for(int i = sum - 1; i >=0; i--)//倒序输出。 { System.out.print(k[i]); if(i > 0) { System.out.print(" "); } } }}
这道题我踩到的雷就是,一开始用了按从小到大的顺序排,结果显示全是0,然后改为从大到小的时候,循环中的初始条件没改,导致有一个测试点错误,检查半天才发现。
仅供参考,本人才疏学浅,如有疑问或改进,欢迎提出,一起进步。
阅读全文
0 0
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064.朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- 1064. 朋友数(20)
- Ubuntu下SVN服务的搭建(apache2+svn)
- IO-01-字节流与字符流
- loadrunner的学习
- 【密码学】C语言实现AES核心步骤
- LeetCode-矩阵旋转
- 1064. 朋友数(20)
- RAID--独立冗余磁盘阵列
- Mapping Solr Converter
- (二十二)Animator 源码分析
- Codeforces Round #363 (Div. 2) C Vacations
- 回顾大一·C语言编程11.4(3)(4)+12.1(1)+12.1(2)①②+实验12.1(3)+12.2+12.3
- 丢失libiconv-2.dll解决办法以及无法定位输入点libiconv-2.dll到动态链接库
- git 到gitub中出现的问题
- CCS7.2软/硬件断点设置,精确计算代码运行时间及定时器定时时间验证(适用于C28x芯片)