题解:P1781 宇宙总统
题目传送门
题意
给定
思路
由于数字太大,我们采用字符串输入,而是第几个输入的,我们可以用
那么怎么比大小呢?首先肯定是谁的位数多谁大,如果位数一样那么肯定是字典序大的大。所以我们就得到了如下的比较函数:
bool cmp(node x, node y)
{
if (x.s.size() == y.s.size())
return x.s > y.s;
return x.s.size() > y.s.size();
}
其他细节见代码。
代码
#include <bits/stdc++.h>
using namespace std;
int n;
struct node
{
string s;
int id;
} a[110];
bool cmp(node x, node y)
{
if (x.s.size() == y.s.size())
return x.s > y.s;
return x.s.size() > y.s.size();
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i].s;
a[i].id = i;
}
sort(a + 1, a + n + 1, cmp);
cout << a[1].id << "\n" << a[1].s;
return 0;
}
题解来之不易,且看且珍惜。给个赞再走吧。
题目传送门