use*_*652 1 c++ bitwise-operators
n & (n>>1)
我在哪里可以使用上面的表达式?我正在解决这个问题,我看到了解决问题的方法,其中使用了表达式.
问题-
You are given an integer n find its next greater or equal number whose
binary representation must not contain consecutive ones.
Run Code Online (Sandbox Code Playgroud)
码-
main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
while((n&(n>>1)))
{
n++;
}
printf("%d\n",n);
}
}
Run Code Online (Sandbox Code Playgroud)
Axe*_*xel 10
它检查连续的n.它执行按位AND运算n并n向右移位一位.如果二进制表示n具有至少两个相邻的表示,您将得到如下内容:
n : 00001100
n>>1 : 00000110
---------------------
n & (n>>1) : 00000100
Run Code Online (Sandbox Code Playgroud)
将此与原始作业进行比较:
给定一个整数n找到它的下一个更大或相等的数字,其二进制表示不能包含连续的数字.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |