如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 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
题目比较简单,但是题目描述有点模糊的意思, 题目说输出不同的 朋友证号, 而朋友证号是两个朋友数的 各位数字和
但根据测试用例的输入输出信息来看, 这里说的朋友证号 就是 每个数字 的各位和 并不是两个朋友数的各位和 //测试点 0 1 2就是这个
#include <iostream> #include <vector> using namespace std; int main(){ int n,temp,tempsum{0},i; vector<int> mark(50); vector<int> result; cin >>n; for(i=0;i<n;i++){ cin >> temp; while(temp){ tempsum+=(temp%10); temp/=10; } mark[tempsum]++; tempsum=0; } for(i=0;i<mark.size();i++){ if(mark[i]>=1){ result.push_back(i); } } cout <<result.size()<<endl; for(i=0;i<result.size()-1;i++){ cout << result[i]<<" "; } if(i<result.size())cout << result[i]<<endl; return 0; }