题解:P1781 宇宙总统

· · 题解

题目传送门

题意

给定 n 个数,输出最大数和他是第几个输入的。

思路

由于数字太大,我们采用字符串输入,而是第几个输入的,我们可以用 id 存下。
那么怎么比大小呢?首先肯定是谁的位数多谁大,如果位数一样那么肯定是字典序大的大。所以我们就得到了如下的比较函数:

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;
}

题解来之不易,且看且珍惜。给个赞再走吧。

题目传送门