来自2025.4.27得物笔试题
考虑A,B,X,Y的二进制表示形式,由X∨Y=B知X和Y的最高位不可能比B更高,由X∧Y=A知X和Y的最高位不可能比A更低。
我们将总位数定为A和B位数的最大值,逐位进行考察。
若,必有
若,必有
或
若,这种情况下不存在满足条件的X,Y
若,必有
可得出如下结论:
利用这个结论写出程序
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int count = 0;
for (int i = Math.min(a, b); i <= Math.max(a, b); i++) {
int j = a + b - i;
if (j < i) {
break;
}
if ((i & j) == a && (i | j) == b) {
count++;
}
}
System.out.println(count);
}
}