1064. 朋友数(20)

来源:互联网 发布:ubuntu安装语言包命令 编辑:程序博客网 时间:2024/05/16 16:13

本题要求:

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如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

解题思路 :

用一个40大小(因为最大数为9999=36)的数组来存朋友证号。
其他的根据题意来写即可

代码 :

#include <iostream>using namespace std;  int main() {    int n;    int a[40] = {0};    cin >> n;    for (int i = 0; i < n; i++) {        string str;        cin >> str;        int temp = 0;        for (int j = 0; str[j] != '\0'; j++) {            temp += str[j] - '0';        }        a[temp]++;    }     int m = 0;    for (int i = 0; i < 40; i++) {        if (a[i] != 0) {            m++;        }    }    cout << m << endl;    bool flag = false;    for (int i = 0; i < 40; i++) {        if (a[i] != 0) {            if (flag) {                cout << " ";            }            flag = true;            cout << i;        }    }    return 0;  }  
0 0
原创粉丝点击