PAT -1064 B 친구 번호 (20 점)

링크를 클릭 전체 솔루션 요약 PAT B - AC

제목 :
". 친구 카드 번호"두 개의 정수 번호와 모두 동일이는 "친구의 수"라고하며, 대중이 그들의 그 경우 1 친구 카드 번호 2 + 3 = 6 + 1 = 5, 6 인 때문 + 51 (123)는, 예를 들어, 친구들의 수이다. 그들이 가지고있는 친구의 얼마나 많은 다른 라이센스 수에 대한 당신의 통계를 필요로하는 정수의 일부를 주어.

입력 형식 :
첫 번째 행의 입력은 양의 정수 N. 주어진다 그러면 숫자 사이의 공간으로 구분 N 양의 정수 라인을 지정. 제목하는 모든 숫자보다 10 확인 . 4 .

출력 형식 :
제 첫번째 디지털 친구의 다른 라이선스 번호의 수가 소정의 출력 선 후 프렌드 카드 번호와는 별도의 공간이 없을 수 광고 오름차순 디지털 간격 공간, 행의 끝을 출력한다.

샘플 입력 :

8
123 899 51 998 27 33 36 12

샘플 출력 :

4
3 6 9 26

내 코드 :

#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件

int main()
{
    set<int>friend_num;
    int N;
    cin>>N;
    for(int i=0;i<N;i++)
    {
        int t;
        cin>>t;
        int sum=0;
        while(t>0)
        {
            sum+=t%10;
            t/=10;
        }
        friend_num.insert(sum);
    }
    cout<<friend_num.size()<<endl;;
    while(1)
    {
        printf("%d",*friend_num.begin());
        friend_num.erase(friend_num.begin());
        if(friend_num.size())cout<<" ";
        else return 0;
    }
    return 0;
}

참고 : 직접적인 계산 및 모든 라인과 필요성은 예 3과, 두 개의 동일한 번호가없는

게시 82 개 원래 기사 · 원 찬양 1 · 조회수 1671

추천

출처blog.csdn.net/qq_34451909/article/details/104902866