题目描述
地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 nn 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。
输入格式
第一行为一个整数 nn,代表竞选总统的人数。
接下来有 nn 行,分别为第一个候选人到第 nn 个候选人的票数。
输出格式
共两行,第一行是一个整数 mm,为当上总统的人的号数。
第二行是当上总统的人的选票。
输入输出样例
输入 #1复制
5 98765 12365 87954 1022356 985678
输出 #1复制
4 1022356
说明/提示
票数可能会很大,可能会到 100100 位数字。
1 ≤n≤20
分析:
并不算难,唯一要注意的就是票数的位数会过100位,那么会爆int,只能用大数存储了,可以选择字符串或者数组方式,在这里我选择了字符串方式来存储数据,以下是判断过程:
先判断长度,若长度相同,那么从第0位开始,依次比较,直到得出结论为止
上AC代码:
#include<iostream>
#include<string>
using namespace std;
int n;
typedef struct People{
int num;
string p;
}people;
people pp[25];
int judge(string s1,string s2);
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
pp[i].num=i;
cin>>pp[i].p;
}
string max;
int num=0;
max="";
for(int i=1;i<=n;i++)
{
if(judge(pp[i].p,max))
{
max=pp[i].p;
num=i;
}
}
cout<<num<<endl;
cout<<max;
return 0;
}
int judge(string s1,string s2)
{
if(s1.size()>s2.size())
return 1;
if(s1.size()<s2.size())
return 0;
for(int i=0;i<s1.size();i++)
{
if(s1[i]>s2[i])
return 1;
if(s1[i]<s2[i])
return 0;
}
}