题目难度:两颗星
题目大意:给出一个数值的序列,然后要求求出序列中不同的朋友数值的ID,就是不同数位相加的和。
题目坑点:没有啥难度,纯模拟题,但是有一个值得吸取的经验,就是STL中一些不同容器的相互转换。本题中的set转换为vector然后进行排序,转换只需要如下:
set<int> res;
vector<int> v(res.begin(),res.end());
代码如下:
#include<iostream>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<algorithm>
#include<map>
#include<set>
#include<cstring>
using namespace std;
int toFriNum(int a){
int res=0;
while(a!=0){
res+=a%10;
a/=10;
}
return res;
}
int main(){
int N,temp;
cin>>N;
set<int> res;
for(int i=0;i<N;i++){
cin>>temp;
res.insert(toFriNum(temp));
}
cout<<res.size()<<endl;
vector<int> v(res.begin(),res.end());
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++){
cout<<v[i];
if(i!=v.size()-1)
cout<<" ";
}
}