为了账号安全,请及时绑定邮箱和手机立即绑定

无法理解这种在线判断的解决方案是如何出错的

无法理解这种在线判断的解决方案是如何出错的

侃侃无极 2021-12-10 16:52:04
我正在尝试解决似乎是一个相对简单的问题,输入孩子的数量和糖果的总数,如果糖果可以在孩子之间平均分配,则打印“是”,否则打印“否” .从图中可以看出,前两个测试用例通过了,而最后一个没有通过。我在这里挠头,有什么想法吗?import java.util.*;public class AnotherCandies {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int cases = sc.nextInt();        for(int i = 0; i < cases; i++)        {            long numKids = sc.nextLong();            long total = 0;            for(int j = 0; j < numKids; j++)            {                long n = sc.nextLong();                total += n;            }            if(total % numKids == 0)                System.out.println("YES");            else                System.out.println("NO");        }    }}
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你有长超载总和的问题。您可以%在每一步使用,然后再做一次以获得最终总和:


public static void main(String[] args) {

    try (Scanner scan = new Scanner(System.in)) {

        for (int i = 0, T = scan.nextInt(); i < T; i++) {

            int N = scan.nextInt();

            int sum = 0;


            for (int j = 0; j < N; j++)

                sum = (int)(scan.nextLong() % N + sum) % N;


            System.out.println(N == 0 ? "YES" : "NO");

        }

    }

}

//img1.sycdn.imooc.com//61b3155b0001751a11210262.jpg

查看完整回答
反对 回复 2021-12-10
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我认为你需要检查案件total=0。也许在这种情况下你应该打印否?


if(total == 0)

     System.out.println("NO");

else if(total % numKids == 0)

     System.out.println("YES");

else

     System.out.println("NO");


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信