题目链接:1120 Friend Numbers (20分)
题意:
给定一个数组,输出所有友好数字。友好数字就是每个数的各个位相加。
分析
计算每个数的各个位之和放入set中输出。
set使用
set默认是从小到大排序,遍历Set 使用迭代器set::iterator it = st.begin(); 迭代器是指针类型的,遍历set的值使用 *it 就可获得其中的值。
代码
#include <iostream>
#include <cstdio>
#include <set>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
const int maxn = 10010;
int toDigit(int x);
int main(int argc, char** argv) {
int n, x;
scanf("%d", &n);
set<int> st;
for (int i = 0; i < n; i++) {
scanf("%d", &x);
int res = toDigit(x);
st.insert(res);
}
printf("%d\n", st.size());
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
if (it == st.begin())
printf("%d", *it);
else
printf(" %d", *it);
}
return 0;
}
int toDigit(int x) {
int res = 0;
while (x != 0) {
res += x % 10;
x /= 10;
}
return res;
}