题意:给你一个n和x,问你是否存在一个m,使
n&(n+1)&(n+2)&...&m=x如果存在输出最小的m,否则输出-1。
思路:因为是与运算,那么与之后的结果一定不会大于n,所以如果m>n就可以直接输出-1.
而且数据范围比较大,那么我们可以把n转化为二进制数。
假如是90转换为二进制数就是1011010,
&n+1即1011010&1011011=1011010,
&n+2即1011010&1011100=1011000,
&n+3即1011000&1011101=
文章描述了一个编程问题,给定两个整数n和x,判断是否存在一个m使得n与从n到m的所有整数的与运算结果等于x。通过分析二进制表示,可以确定解的存在性和最小值。当m>n时,答案为-1;若x的二进制位在n的二进制位之后无法得到,则也返回-1。否则,通过找到x二进制与n不同的最高位,可以计算出最小的m。
题意:给你一个n和x,问你是否存在一个m,使
n&(n+1)&(n+2)&...&m=x如果存在输出最小的m,否则输出-1。
思路:因为是与运算,那么与之后的结果一定不会大于n,所以如果m>n就可以直接输出-1.
而且数据范围比较大,那么我们可以把n转化为二进制数。
假如是90转换为二进制数就是1011010,
&n+1即1011010&1011011=1011010,
&n+2即1011010&1011100=1011000,
&n+3即1011000&1011101=
444

被折叠的 条评论
为什么被折叠?