/*
* @Author: Ray123
* @Description:
* @Date: 2022-02-17 16:08:13
* @LastEditTime: 2022-02-17 17:35:28
* @FilePath: \undefinede:\MyApp\MyAdorableCode\1064.c
*/
#include <stdbool.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>//malloc()
int id(int a){
int sum=0;
while(a/10!=0){
sum+=a%10;
a=a/10;
}
sum+=a;
return sum;
}
int main()
{
int input;
int k=0;
scanf("%d",&input);
int a[input][2];
while(input--){
scanf("%d",&a[k][0]);
a[k][1]=id(a[k][0]);
k++;
}
//printf("k=%d\n",k);
int i=0,j=0,t=0;
for(i=0;i<k-1;i++){
for(j=0;j<k-1-i;j++){
if(a[j][1]>a[j+1][1]){
t=a[j][1]; //产利用中间变实现两值互换
a[j][1]=a[j+1][1];
a[j+1][1]=t;
}
}
}
int n=1,m=1;
for(;n<k;n++){
if(a[n][1]==a[n-1][1]){
m--;
}
m++;
}
printf("%d\n",m);
int e=1,r=0;
if(m==1){
printf("%d",a[0][1]);
}else{
printf("%d ",a[0][1]);
m--;
r=a[0][1];
for(;e<k;e++){
if(m>1&&a[e][1]>r){
printf("%d ",a[e][1]);
m--;
r=a[e][1];
}else if(m==1&&a[e][1]>r){
printf("%d",a[e][1]);
m--;
r=a[e][1];
break;
}
}
}
return 0;
}
题目本质=排序+去除重复数字
需要注意:
如果仅输入一个数字,那么你的结果最末尾不可以有空格