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