PAT(Basic Level) Practice : 1064 朋友数 (20分)

1064 朋友数 (20分)

哈希表

建立一个哈希表,对于每一个数,把数的每一位加起来,存到哈希表中
由于数字都是正整数,且小于10000,那么数字范围是1~9999
哈希表1~36,建立一个int hash[37]即可

代码

#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;

#include<iomanip>
//精度

#include<cmath>
//round四舍五入取整

int Hash[37]={0};
int main()
{

    //哈希表
    int num;
    cin>>num;
    for(int i=0;i<num;i++)
    {
        int n;
        cin>>n;
        int sum=0;
        while(n>0)
        {
            sum+=n%10;
            n/=10;
        }
        Hash[sum]++;
    }
    vector<int> res;
    int count=0;
    for(int i=1;i<37;i++)
    {
        if(Hash[i]>0)
        {
            count++;
            res.push_back(i);
        }
    }
    cout<<count<<endl;
    for(int i=0;i<res.size();i++)
    {
        cout<<res[i];
        if(i!=res.size()-1)
            cout<<" ";
        else
            cout<<endl;
    }
    return 0;
}

posted @ 2020-09-29 14:35  韩天尊  阅读(92)  评论(0)    收藏  举报