【问题标题】:two integer devisor sum [closed]两个整数除数和[关闭]
【发布时间】:2021-07-01 21:10:51
【问题描述】:

我写了这段代码,但结果我得到了错误的答案,我不知道为什么。 我必须得到 3 个整数 a, b ,x 。然后找到a,b除数,如果除数的和不大于x,则res++,最后打印res。

import java.util.Scanner;

public class testQuestion {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a = input.nextInt();
        int b = input.nextInt();
        int x = input.nextInt();
        int[] resB = new int[b];
        int[] resA = new int[a];
        int res = 0;

        for (int i = 1; i <= a; i++) {
            if (a % i == 0)
                resA[i - 1] += i;
            if (b % i == 0)
                resB[i - 1] += i;
        }
        for (int i : resA) {
            if (i > 0)
                for (int j : resB) {
                    if (i + j <= x && j > 0) {
                        res++;
                    }
                }
        }
        System.out.println(res);
    }
}

【问题讨论】:

  • 您能否分享更多关于 WHAT 无法与可复制示例一起工作的详细信息?
  • 这是问题
  • Poopak 醒来。他记得他做了一个梦,但他不记得这个梦的细节...... Poopak 知道他在梦中有两袋弹珠,其中至少有一颗弹珠在每个袋子里。 Poopak 知道第一个袋子里的弹珠数量可以被 numberaa 整除,而第二个袋子里的弹珠数量可以被数字 bbhave be 整除。 Poopak 还记得他的两个袋子并不太重,最多 xx 块大理石装在两个袋子里。
  • 与此同时,Poopak 看到了 Tuk 并告诉了他这个故事。 Take 还很快数出了 Poopak 可能做过的不同梦的数量,并告诉了他这个数字

标签: java arrays integer-division


【解决方案1】:

不确定这是否有帮助,似乎您有 2 个存储,A 和 B。通过循环 A,您可能会错过 B。示例 B 有 10 条记录,A 只有 1 条记录,而 A等于或小于 0 则不会循环。为确保这一点,循环 A 和 B 并检查它是否 >0。

-但是如果A为空,你将不会循环B。

    for (int i : resA) {
        for (int j : resB) {
           if(j > 0 && i > 0) {
             if (i + j <= x) {
                    res++;
             }
           }
        }
    }

更新

首先:通过删除 resB 创建一个变量。离开 int[] resA = new int[a];

其次:循环A并添加到resA中

第三:循环B并检查除法。然后比较任何 B 与任何 A 的总和是否 > x。

第四:如果你想检查一个空的A应该让B加0,你可以进行调整。或者,你可能根本不计算它。取决于你需要什么。如果为空,也可以对 B 做同样的事情。

【讨论】:

  • 那你有什么建议?
  • 建议。这符合您的需求吗?
  • 还要检查你是否需要任何能被 1 整除的东西?因为任何东西除以 1 总是模数 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 2012-05-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多