【排序】【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);
}
}