题目原型为洛谷 P1781 宇宙总统。本题的考点是高精度整数比较:票数超长,任何内置整型都存不下,但题目只要求比较大小、不要求做运算,因此用字符串即可。
目标
完成本题后,你应该能够:
- 判断「只比较、不运算」时是否真的需要高精度运算库;
- 用两条规则比较超长非负整数:位数长的更大;位数相同按字典序;
- 说明为什么字符串字典序恰好等于数值大小(位数相同时)。
前置知识
- 字符串的基本操作与字典序比较;
- 内置整型的取值范围(
long long约为 ±9.2 × 10¹⁸)。
题目
宇宙总统竞选,有 n 位候选人,每位候选人的得票数是一个可能非常巨大的正整数。请找出得票最多的候选人。
输入格式
- 第一行一个整数
n,表示候选人人数; - 接下来
n行,每行一个正整数,表示该候选人的得票数(无前导零)。
输出格式
- 第一行:得票最多的候选人的编号(
1到n的整数,若并列取先出现者); - 第二行:该候选人的得票数。
数据范围
| 项目 | 范围 |
|---|---|
候选人人数 n | 1 ≤ n ≤ 20 |
| 票数 | 不超过 100 位的正整数 |
样例
样例输入
input
5
98765
12365
87954
1022356
985678样例输出
output
4
1022356样例解释
五张票中最大的是第 4 位候选人的 1022356(七位数,比其它五位数都大)。
如何验证
先安装 Node.js、pnpm 和支持 C++17 的编译器。
powershell
# 已进入本 Lab 目录
make doctor
make run
make run CASE=001-sample
make interactive
make scoreWindows 没有安装 Make 时,在仓库根目录使用等价的 pnpm 入口:
powershell
pnpm lab:run -- labs/chapter-10/exercise/E-10-02-big-int-compare
pnpm lab:score -- labs/chapter-10/exercise/E-10-02-big-int-compare标准输出参与判题,调试信息请写入标准错误。
完成清单
思考题
- 如果票数带前导零(如
007与100),上面的比较规则还成立吗?需要怎么处理? - 如果题目改成「把两张票加起来」,只用字符串够吗?还需要什么?