1064 朋友数
Statement
Metadata
- 作者: CHEN, Yue
- 单位: 浙江大学
- 代码长度限制: 16 KB
- 时间限制: 400 ms
- 内存限制: 64 MB
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。
输入格式
输入第一行给出正整数 N。随后一行给出 N 个正整数,数字间以空格分隔。题目保证所有数字小于
输出格式
首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。
输入样例
输出样例
Solution
#include <bits/stdc++.h>
using namespace std;
#define MAXN 10000
map<int, int> a;
int main() {
int n1;
cin >> n1;
int i, j;
string s;
int count = 0;
for (i = 0; i < n1; i++) {
cin >> s;
int len = s.size(), total = 0;
for (j = 0; j < len; j++) {
total += (s[j] - 48);
}
if (a[total] == 1)
continue;
else {
a[total] = 1;
count++;
}
}
cout << count << endl;
map<int, int>::iterator it;
it = a.begin();
cout << it->first;
for (it++; it != a.end(); it++) cout << " " << it->first;
cout << endl;
}
Last update: May 4, 2022