PTAフレンド番号(20分)

無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。

2つの整数が同じ数字の合計を共有し、その合計が「フレンドID」である場合、「フレンド番号」と呼ばれます。たとえば、123と51は友達番号です。1+ 2 + 3 = 5 + 1 = 6であり、6は友達IDです。いくつかの数を与えられて、それらの間で異なる友達IDの数を数えることになっています。

入力仕様:

各入力ファイルには1つのテストケースが含まれています。いずれの場合も、最初の行は正の整数Nを示します。次の行には、スペースで区切られたN個の正の整数が示されています。すべての数値は10 4未満です。

出力仕様:

いずれの場合も、最初の行に、指定された整数の中のさまざまなフリンジIDの数を出力します。次に2行目に、フレンドIDを昇順で出力します。数値は1つのスペースで区切る必要があり、行末に余分なスペースがあってはなりません。

入力例:

8
123 899 51 998 27 33 36 12

出力例:

4
3 6 9 26
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX

//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=1010;
int N,s[10010],ct;
set<int> jg;
int sum(int x){
    int ans=0;
    while(x){
        int ls=x%10;
        ans+=ls;
        x/=10;
    }
    return ans;
}
int main(){
    cin>>N;
    for(int i=0;i<N;i++){
        cin>>s[i];
        jg.insert(sum(s[i]));
    }
//    for(int i=0;i<N;i++){
//        for(int j=i+1;j<N;j++){
//            if(sum(s[i])==sum(s[j])){
//                ct++;
//                jg.insert(sum(s[i]));
//            }
//        }
//    }
    set<int>::iterator i;
    cout<<jg.size()<<endl;
    for(i=jg.begin();i!=jg.end();i++){
        if(i!=jg.begin())
            cout<<' ';
            cout<<*i;
    }
    return 0;
}

 

おすすめ

転載: blog.csdn.net/weixin_44170305/article/details/108481332