【排序】【JAVA】P1781宇宙总统

题目

思路:这道题关键在于解决大整数的比较问题,通过比较,得到获得票数最多的值,java可以通过BigInterage实现
由于BigInterage没有提供比较的方法,这里可以通过两种方法实现比较.

//通过前一个和后一个做减法,转浮点型后和0进行比较,小于0就交换
if(max.subtract(temp).doubleValue()<0) {
    max = temp;
    count = i;
}
//原来的max和temp比较,获取较大的哪一个,然后判断max是否和temp相等
if((max=max.max((temp))).equals(temp)) {
    //max后和原来的值不相等相等,交换
    count=i;
}
package LOQ.排序;

import java.math.BigInteger;
import java.util.Scanner;

public class P1781宇宙总统 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        //先把第一个值默认为票数最多
        BigInteger max = sc.nextBigInteger();
        //第一个号数
        long count = 1;
        for(int i=2;i<=n;i++) {
            BigInteger temp = sc.nextBigInteger();
            /*//做减法,然后求余数防止转换整数时数值越界小于0需要交换
            if(max.subtract(temp).doubleValue()<0) {
                max = temp;
                count = i+1;
            }*/
            if((max=max.max((temp))).equals(temp)) {
                //max后和原来的值不相等相等,交换
                count=i;
            }
        }
        System.out.println(count);
        System.out.print(max);
    }
}

posted @ 2022-03-01 07:52  Lnnau  阅读(24)  评论(0)    收藏  举报