关于c++:PAT甲级1120-Friend-Numbers

题目粗心

如果两个数字的位数和雷同,那么就阐明这是一个好友数,当初给定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;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理