华师一附中OI组
标题: P1781 宇宙总统 [打印本页]
作者: 倚窗倾听风吹雨 时间: 2018-7-22 11:05
标题: P1781 宇宙总统
本帖最后由 倚窗倾听风吹雨 于 2018-7-22 11:06 编辑
https://www.luogu.org/problemnew/show/P1781
题目背景
宇宙总统竞选
题目描述
地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。
输入输出格式
输入格式:
president.in
第一行为一个整数n,代表竞选总统的人数。
接下来有n行,分别为第一个候选人到第n个候选人的票数。
输出格式:
president.out
共两行,第一行是一个整数m,为当上总统的人的号数。
第二行是当上总统的人的选票。
输入输出样例
输入样例#1:复制
5
98765
12365
87954
1022356
985678
输出样例#1:复制
4
1022356
说明
票数可能会很大,可能会到100位数字。
n<=20
作者: admin 时间: 2019-3-16 15:11
因为数字太大,不能用int long long float等数据类型来处理,只能使用 string来读入和处理,那么每个数都当一个字符串来读入,比较大小就不是简单的按字符串比较大小,而应该先比较长度,再比较字典序。
- #include <iostream>
- using namespace std;
- string s,maxs;
- int n,maxi,i,l,maxl;
- int main()
- {
- maxs="";maxi=0;maxl=0;
- cin>>n;
- for (i=1;i<=n;i++)
- {
- cin>>s;
- l=s.size();
- bool b1=l>maxl; ///长度大的数字比较大
- bool b2=(l==maxl) && (s>maxs); ///长度相等的话字典序
- if (b1||b2) {maxs=s;maxl=l;maxi=i;}
- }
- cout<<maxi<<endl<<maxs;
- return 0;
- }
复制代码
作者: admin 时间: 2020-2-3 20:47
- #include <iostream>
- using namespace std;
- int i; ///x-票数 i-第几个人
- int maxi;///maxxx-最大票数 i-最多票的那个人
- string x,maxx;
- int main()
- {
- int n;cin>>n;
- maxx="0"; ///不可能得最小值 任何数都比他大
- for (i=1; i<=n; i++)
- {
- cin>>x;
- int l1=x.size();
- int l2=maxx.size();
- bool b1=l1>l2;
- bool b2=(l1==l2) && (x>maxx);
- if (b1||b2)
- {
- maxx=x;
- maxi=i;
- } ///两个都要改
- }
- cout<<maxi<<endl<<maxx<<endl;
- return 0;
- }
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/) |
Powered by Discuz! X3.2 |