题目大意
如果两个数字的位数和相同,那么就说明这是一个好友数,现在给定N个数字,要求按照顺序输出不同的好友数
算法思路
在输入每一个数字的时候计算该数字的位数和,然后添加到set集合中,set集合的大小就是不同的好友数目,最后依次输出set集合中的元素。
提交结果
AC代码
#include<cstdio>
#include<set>
using namespace std;
int calDigitSum(int n){
int r = 0;
while(n!=0){
r += n%10;
n /= 10;
}
return r;
}
int main() {
int n;
scanf("%d",&n);
int num;
set<int> s;
for(int i=0;i<n;++i){
scanf("%d",&num);
s.insert(calDigitSum(num));
}
printf("%lu\n",s.size());
int index = 0;
for(auto it:s){
printf("%d",it);
if(index<s.size()-1){
printf(" ");
}
++index;
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。