站外题求助
  • 板块灌水区
  • 楼主__liyiting01__
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/14 17:56
  • 上次更新2024/4/14 20:54:21
查看原帖
站外题求助
1313317
__liyiting01__楼主2024/4/14 17:56

小猴对一个数的数位之和很感兴趣,今天他要按照数位之和给序列排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面,保证所有整数互不相同。 例如,1001 排在 99 前面,因为 1001 的数位之和是 2而 99的数位之和是18又如,2 排在 101 前面,因为它们的数位之和相同,而 2小于 101。 请你帮助小猴完成这个任务。

#include <iostream>
#include <algorithm>
using namespace std;
int a[10000000];
int sumnum(long long n)
{
	int sum=0;
	while(n>0)
	{
		sum+=n%10;
		n/=10;
	}
	return sum;
}
bool cmp(long long x,long long y)
{
	if (sumnum(x)!=sumnum(y))return sumnum(x)<sumnum(y);
	else return x<y;
}
int main()
{	
	int n;
	cin>>n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	sort(a + 1, a + n + 1,cmp);
	for (int i = 1; i <= n; i++)
	{
		cout << a[i] <<" ";	
	}
	return 0;
}
2024/4/14 17:56
加载中...