检查位在java中设置或未指定其位置(黑客问题)
我最初是这样做的,给定的数字和2^k(第二个输入,即位置)是双向和..ed,结果是否等于2^k。然而,它失败了一个测试用例,我想知道为什么?(在这种情况下,位置从0开始,从右向左) PS:我不是在寻找替代ans,因为我自己找到了它并完成了这个问题,我只是想解释一下为什么下面的代码在一个测试用例中失败 当我保持检查位在java中设置或未指定其位置(黑客问题),java,Java,我最初是这样做的,给定的数字和2^k(第二个输入,即位置)是双向和..ed,结果是否等于2^k。然而,它失败了一个测试用例,我想知道为什么?(在这种情况下,位置从0开始,从右向左) PS:我不是在寻找替代ans,因为我自己找到了它并完成了这个问题,我只是想解释一下为什么下面的代码在一个测试用例中失败 当我保持len&k!=0 import java.io.*; import java.util.*; import java.lang.*; public class Solution {
len&k!=0
import java.io.*;
import java.util.*;
import java.lang.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long len, i, k, j;
len = sc.nextLong();
j = sc.nextLong();
k = 1 << j;
// System.out.println(k);
// System.out.println((len & (1 << (j))));
if( (len & k) == k ) {
// System.out.println((len & (1 << (j))));
System.out.print("true");
}else
System.out.print("false");
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
}
}
}
}
导入java.io.*;
导入java.util.*;
导入java.lang.*;
公共类解决方案{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
long len,i,k,j;
len=sc.nextLong();
j=sc.nextLong();
k=1它应该可以工作。我想知道失败测试的输入值是多少
看看这个
long len = sc.nextLong(); // should not be negative
int j = sc.nextInteger(); // should be within [0;61]
long k = 1L << j;
// if bit is set
len & k == k (e.g. len & k == 0) == true
long len=sc.nextLong();//不应为负
int j=sc.nextInteger();//应该在[0;61]之内
long k=1L请澄清您的问题。@AlexRudenko如我所说,我想知道上述代码在某些情况下失败的原因。您还想让我解释什么?@bha_1999您能为失败的测试提供一个输入值吗?您的代码没有编译,导入有问题(我认为缺少*
),以及如果(len&k==k)
:错误:二进制运算符“&”的操作数类型不正确:第一种类型:长第二种类型:布尔值
。此外,由于这是一个黑客银行问题,您能否提供问题的链接,以便我们可以阅读原始文本并可能尝试测试?@MarcoLucidi它确实在这里和我的本地环境中编译(这是eclipse)。正如我所说,即使在Hackerrank上,它也通过了9/10测试用例,因此绝对不是编译问题。它只是不检查一个角落的用例。还有,这里的链接是:谢谢,这很有效。我改变了(1