当前位置: 代码迷 >> 综合 >> 1120 Friend Numbers (20分)
  详细解决方案

1120 Friend Numbers (20分)

热度:45   发布时间:2023-11-28 05:41:31.0

题目链接: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);elseprintf(" %d", *it);}return 0;
}
int toDigit(int x) {
    int res = 0;while (x != 0) {
    res += x % 10; x /= 10;}return res;
}