洛谷题单指南-排序-P1781 宇宙总统

原题链接:https://www.luogu.com.cn/problem/P1781

题意解读:题目思路非常简单,在n个投票数中选最大的,并记录其编号即可,由于投票数很大,无法直接用整形,需要通过string来进行数字比较。

解题思路:

本题的关键在于如何比较string数字的大小?在高精度减法时,需要判断两个数的大小,用大数减小数,这里方法类似,判断逻辑如下:

1、如果字符串长度不一样,则长度大的字符串表示的数字较大

2、如果字符串长度一样,则比较第一个不一样的字符,第一个不一样的字符较大的字符串所表示的数字较大

100分代码:

#include <bits/stdc++.h>
using namespace std;

bool cmp(string s1, string s2)
{
    if(s1.length() != s2.length()) return s1.length() < s2.length();

    for(int i = 0; i < s1.length(); i++)
    {
        if(s1[i] != s2[i]) return s1[i] < s2[i];
    }

    return true;
}

int main()
{
    int n; 
    cin >> n;
    string s, max;
    int maxn;
    for(int i = 1; i <= n; i++)
    {
        cin >> s;
        if(cmp(max, s)) 
        {
            max = s;
            maxn = i;
        }
    }
    cout << maxn << endl;
    cout << max;

    return 0;
}

 

posted @ 2024-01-30 09:56  五月江城  阅读(43)  评论(0编辑  收藏  举报