P1781 宇宙总统

博客主要介绍了如何解决P1781问题,即对大数字进行排序并找出最大值。由于数字规模大,博客建议使用字符串存储,并指出位数多的数字优先级更高,位数相同则比较高位。提供了完整的解题代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

P1781 宇宙总统

题目梗概

对大数字进行排序,输出最大值。

解题梗概

因为数字较大,有的达到了100位,所以采用字符串存储。这里给出的数字都是首部不包含0的,不必进行数据预处理。
比较的方式

  • 首先位数多的数字比位数小的数字肯定更大一些,即字符串长度大的优先级大。例如,123 > 12
  • 其次位数相同时,高位较大的数优先级大例如,121> 111

完整代码

#include <iostream>
#include <algorithm>
using namespace std;
struct candidate{
	int no;
	string ticket;
}c[21];
bool cmp(candidate a, candidate b){
	string sa = a.ticket, sb = b.ticket;
	if(sa.length() != sb.length()) return sa.length() > sb.length();
	else{
		for(int i = 0;i<sa.length();i++){
			if(sa[i] == sb[i]) continue;
			else return sa[i] > sb[i];
		}
	}
} 
int main(){
	int n;
	cin >> n;
	for(int i = 0;i<n;i++){
		c[i].no = i + 1;
		cin >> c[i].ticket;
	}
	sort(c, c+n, cmp);
	cout << c[0].no << endl << c[0].ticket;
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值