Haga clic en el enlace completo Resumen solución PAT B -AC
Título:
"número de tarjeta de amigo" Si dos números enteros y todo el mundo es el mismo, se llama el "número de amigos", y que el público y que su 51 y 123, por ejemplo, es el número de amigos, porque 1 + 2 + 3 = 5 + 1 = 6, y 6 es su número de tarjeta de amigos. Teniendo en cuenta algunos de los enteros que le exijan estadísticas sobre cuántos diferente número de licencia de amigos que tienen.
Formato de entrada:
entrada de la primera fila se le da un número entero positivo N. Entonces dado N línea de números enteros positivos, separadas por un espacio entre los números. Título asegurar que todos los números menos de 10 . 4 .
Formato de salida:
En primer lugar, una primera línea de salida dado el número de distinto número de certificados digitales de amigos; número de tarjeta de amigos y luego da salida a una fila en orden, un espacio digital intervalo ascendente, y el final de la fila pueden no tener espacio extra.
de entrada de la muestra:
8
123 899 51 998 27 33 36 12
Resultado de muestra:
4
3 6 9 26
Mi código:
#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;
}
Nota: cálculo directo y cada línea, y la necesidad no tienen el mismo número de dos, como en el ejemplo 3