링크를 클릭 전체 솔루션 요약 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과, 두 개의 동일한 번호가없는