PAT 乙级 1064.朋友数 C++/Java
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。
输入格式:
输入第一行给出正整数 N。随后一行给出 N 个正整数,数字间以空格分隔。题目保证所有数字小于 1。
输出格式:
首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。
输入样例:
8
123 899 51 998 27 33 36 12
输出样例:
4
3 6 9 26
C++实现:
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 //1064:朋友数 5 int main() { 6 int n, count = 0; 7 cin >> n; 8 int arr[37] = { 0 }; 9 for (int i = 0; i < n; i++) { 10 int t = 0; 11 string s; 12 cin >> s; 13 for (int j = 0; j < s.length(); j++) { 14 t += s[j] - '0'; 15 } 16 arr[t]++; 17 } 18 for (int i = 0; i < 37; i++) { 19 if (arr[i] > 0) { 20 count++; 21 } 22 } 23 cout << count << endl; 24 bool flag = false; 25 for (int i = 0; i < 37; i++) { 26 if (arr[i] > 0) { 27 if (flag) { 28 cout << " "; 29 } 30 cout << i; 31 flag = true; 32 } 33 } 34 return 0; 35 }
Java实现: