问题: 写一个函数:
类解决方案{公共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。这个测试用例出了什么问题?
我真的很想知道是否有一种方法可以实现此解决方案。感谢您的帮助!