PTA basic 1064 朋友数 (20 分) c++语言实现(g++)

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。

输入格式:

输入第一行给出正整数 N。随后一行给出 N 个正整数,数字间以空格分隔。题目保证所有数字小于 10​4​​。

输出格式:

首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

输入样例:

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;
}

 

上一篇:【面试官不讲武德系列】面试官一口气问了MySQL事务、锁和MVCC


下一篇:MySql语法错误代码1064