【问题标题】:Incorrect output on USACO 2022 Dec bronze problem 1USACO 2022 Dec 青铜问题 1 的输出不正确
【发布时间】:2023-02-23 09:46:59
【问题描述】:

我编写了这段代码,它在一半的测试用例上工作,但在其他测试用例上失败了,我不明白为什么,因为当我将它与解决方案进行比较时,它非常相似。

import java.io.*;
import java.util.*;

public class cowcollege {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int[] cows = new int[n];
        for (int i = 0; i < n; i++){
            cows[i] = sc.nextInt();
        }

        Arrays.sort(cows);
        long biggest = 0;
        long smallest = 0;

        for (int i = n - 1; i >= 0; i--){
            int tut = cows[i];

            if ((cows.length - i) * tut > biggest){
                biggest = (cows.length - i) * tut;
                smallest = tut;
            }
            if ((cows.length - i) * tut == biggest && tut < smallest){
                smallest = tut;
            }

        }

        System.out.print(biggest);
        System.out.print(" ");
        System.out.print(smallest);
    }
}

这是我的代码,适用于测试用例 1-5 和 7,但在其他测试用例上失败

【问题讨论】:

标签: java


【解决方案1】:

程序在计算(cows.length - i) * tut时,由于tut不是long,导致整数溢出,需要将int tut = cows[i];改为long tut = cows[i];才能解决。

【讨论】:

    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 2021-11-13
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多