0

问题: 写一个函数:

类解决方案{公共int解决方案(int A,int B,int K);}

即,给定三个整数 A、B 和 K,返回范围 [A..B] 内可被 K 整除的整数个数,即:

{ i : A ≤ i ≤ B, i mod K = 0 }

例如,对于 A = 6、B = 11 和 K = 2,您的函数应该返回 3,因为在 [6..11] 范围内有三个可被 2 整除的数字,即 6、8 和 10。

为以下假设编写一个有效的算法:

A 和 B 是 [0..2,000,000,000] 范围内的整数;K 是 [1..2,000,000,000] 范围内的整数;A≤B。

我正在研究自己的解决方案。我答对了 62%。但是,有一些我不知道如何实现它的缺陷。任何人都可以帮我解决这个问题吗?我的解决方案:

 public static int solution(int A, int B, int K) {   
        if(K > B){
            if(A == 0 || B == 0)
                return 1;
            return 0;
        }
        
        int diff = B - A;
        int count = diff/K;
        if(B%K == 0 || A%K == 0);
            count += 1;

        return count;
    }

问题 1(正确性测试)在 A = 10,B = 10,K 在 5 中。我期望 1,因为 10%5 = 0,但答案是 0。谁能解释为什么它是 0?

问题 2(正确性测试)我在验证处理范围端点时得到一个不正确的结果,多次运行我可以知道它到底在测试什么吗?它没有在评估中显示测试编号。

问题 3(性能测试)在 A = 101、B = 123M+、K = 10K 时发生了另一个错误。我的答案是 12346,但预期是 12345。这个测试用例出了什么问题?

我真的很想知道是否有一种方法可以实现此解决方案。感谢您的帮助!

4

0 回答 0