华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1003|回复: 2
打印 上一主题 下一主题

P1781 宇宙总统

[复制链接]

50

主题

215

帖子

619

积分

高级会员

Rank: 4

积分
619
跳转到指定楼层
楼主
发表于 2018-7-22 11:05:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 倚窗倾听风吹雨 于 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


回复

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
沙发
发表于 2019-3-16 15:11:45 | 只看该作者
因为数字太大,不能用int long long float等数据类型来处理,只能使用 string来读入和处理,那么每个数都当一个字符串来读入,比较大小就不是简单的按字符串比较大小,而应该先比较长度,再比较字典序。
  1. #include  <iostream>
  2. using namespace std;
  3. string s,maxs;
  4. int n,maxi,i,l,maxl;
  5. int main()
  6. {
  7.     maxs="";maxi=0;maxl=0;
  8.     cin>>n;
  9.     for (i=1;i<=n;i++)
  10.     {
  11.         cin>>s;
  12.         l=s.size();
  13.         bool b1=l>maxl; ///长度大的数字比较大
  14.         bool b2=(l==maxl) && (s>maxs); ///长度相等的话字典序
  15.         if (b1||b2) {maxs=s;maxl=l;maxi=i;}

  16.     }
  17.     cout<<maxi<<endl<<maxs;
  18.     return 0;
  19. }

复制代码


回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
板凳
发表于 2020-2-3 20:47:14 | 只看该作者
  1. #include <iostream>
  2. using namespace std;
  3. int i; ///x-票数  i-第几个人
  4. int maxi;///maxxx-最大票数  i-最多票的那个人
  5. string x,maxx;
  6. int main()
  7. {
  8.         int n;cin>>n;
  9.         maxx="0"; ///不可能得最小值 任何数都比他大
  10.         for (i=1; i<=n; i++)
  11.         {
  12.                 cin>>x;
  13.                 int l1=x.size();
  14.                 int l2=maxx.size();
  15.                 bool b1=l1>l2;
  16.                 bool b2=(l1==l2) && (x>maxx);
  17.                 if (b1||b2)
  18.                 {
  19.                         maxx=x;
  20.                         maxi=i;
  21.                 }  ///两个都要改
  22.         }
  23.         cout<<maxi<<endl<<maxx<<endl;
  24.         return 0;
  25. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-1 22:42 , Processed in 0.104100 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表