问题描述
给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。
样例输入
5 101 100 999 1234 110 样例输出 999 27 1234 10 101 2 110 2 100 1
评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过10000的非负整数
#include <stdio.h>
int max();
int a[1000], b[1000]={0};
int n;
int main(void)
{
scanf("%d", &n);
int index=0;
for (index = 0; index < n; index++)
{
scanf("%d", &a[index]);
int num = a[index];
while(num)
{
b[index] = b[index] + num % 10;
num /= 10;
}
}
for (index = 0; index < n; index++)
max();
return 0;
}
int max()
{
int max = 0;
for (int index = 0; index < n; index++)
{
max = max > b[index] ? max : b[index];
}
int min = 10000;
for (int index = 0; index < n; index++)
{
if (b[index] == max)
min = min < a[index] ? min : a[index];
}
for (int index = 0; index < n; index++)
{
if (max == b[index] && min == a[index])
{
printf("%d %d\n", a[index], b[index]);
b[index] = 0;
}
}
return 0;
}