P1781 【宇宙总统】
likztime
2018-02-01 10:42:00
这道题的思路有两个:
# 1.如果位数不等,肯定是位数大的票数多
# 2.如果位数相等,for循环比较每一位的大小
# 然后用~~万能的~~sort将最大的放在第一个位置,直接输出第一个就好了
代码
```
#include<cmath>
#include<cctype>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<set>
#include<stack>
#include<deque>
#include<queue>
#include<vector>
#include<algorithm>
#include<map>
#include<iomanip>
using namespace std;
int n;
struct work {//结构体
string piao;//票数
int wei;//位数
int sunx;//顺序
} vis[10005];
bool is_sort(work a,work b) {
if(a.wei!=b.wei)return a.wei>b.wei;//如果位数不等,肯定是位数多的大一些
if(a.wei==b.wei){//如果位数相等,比较每一位的大小
for(int i=1;i<=a.wei;++i){
int kk=a.piao[i]-'0';
int mm=b.piao[i]-'0';
if(kk==mm)continue;//如果相等就直接比较下一位
else return kk>mm;
}
}
}
int main() {
// freopen("ex.txt","w",stdout);
scanf("%d",&n);
for(int i=1; i<=n; ++i) {
cin>>vis[i].piao;
vis[i].wei=vis[i].piao.length();
vis[i].sunx=i;
}
sort(vis+1,vis+1+n,is_sort);//将最大的放在第一个,可以直接输出第一个了
cout<<vis[1].sunx<<endl<<vis[1].piao<<endl;
return 0;
}
```