学校OJ——26进制(字符串处理)

本博客探讨了学校在线判题系统中的一道26进制数问题。题目要求将26进制数按升序排列,其中'A'表示26,以此类推,'Z'表示1。解决方案不涉及将字符转换为数字,而是直接通过比较字符串长度和ASCII码进行排序。提示中指出,即使使用unsigned long long类型也无法容纳所有可能的26进制数。

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

问题 B: 26进制数
时间限制: 1 Sec 内存限制: 32 MB
提交: 831 解决: 249
[提交][状态][讨论版]
题目描述
现在我们用A表示26,用B表示25,依次类推,到用Z表示1,即A=26, …X = 3, Y = 2, Z=1,用这种方式构建一个26进制的计数方式。举一个例子:(XD)26=(101)10 。

输入
第一行数字N(N<50)表示有N行输入数据。

接下来的N行,每行为一个长度不超过100的26进制数。

输出
升序输出这些26进制数,一行一个。
样例输入
2
XB
XX
样例输出
XX
XB
提示
即使是unsigned long long也装不下。

分析:既然是字符串处理,那么肯定不可能将字符转换成数字来处理(因为题目中已经有提示了)
其实很容易分析知道,这题的比较依据:

  • 字符串的长度(长的肯定大)
  • 如果一样长的话,就根据ASCII码来排(根据ASCII码从大到小排 为什么?可以自己思考一下qwq

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
bool 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值