C++中计算与n异或结果更大的较小数字个数
给定一个整数,例如num,任务是计算小于num的较小数字个数,这些数字与num的异或结果大于该异或值。
异或运算的真值表如下所示
| A | B | A XOR B |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
输入 − int num = 11
输出 − 与n异或结果更大的较小数字个数为 − 4
解释 −
给定num为11,这意味着我们需要找到num与小于num的数字的异或结果。这些数字是1 XOR 11 < 11(FALSE), 2 XOR 11 < 11(FALSE), 3 XOR 11 < 11(FALSE), 4 XOR 11 > 11(TRUE), 5 XOR 11 > 11(TRUE), 6 XOR 11 > 11(TRUE), 7 XOR 11 > 11(TRUE), 8 XOR 11 < 11(FALSE), 9 XOR 11 < 11(FALSE), 10 XOR 11 < 11(FALSE).
输入 − int num = 12
输出 − 与n异或结果更大的较小数字个数为 − 3
解释 −
给定num为12,这意味着我们需要找到num与小于num的数字的异或结果。这些数字是1 XOR 12 > 12(TRUE), 2 XOR 12 > 12(TRUE), 3 XOR 12 > 12(TRUE), 4 XOR 12 < 12(FALSE), 5 XOR 12 < 12(FALSE), 6 XOR 12 < 12(FALSE), 7 XOR 12 < 12(FALSE), 8 XOR 12 < 12(FALSE), 9 XOR 12 < 12(FALSE), 10 XOR 12 < 12(FALSE), 11 XOR 12 < 12(FALSE).
下面程序中使用的算法如下
输入一个整数元素并将其存储在一个名为num的变量中。
将num的值传递给函数进行进一步处理
创建一个临时变量count来存储结果。
当num > 0时启动循环WHILE
在循环内,检查IF num & 1 == TRUE,则将count设置为count + pow(2, temp)
将temp的值加1
并将num设置为num >> = 1
返回count
打印结果
示例
#include
using namespace std;
//Count smaller numbers whose XOR with n produces greater value
int XOR_greater(int n){
int temp = 0;
int count = 0;
while (n > 0){
if ((n&1) == 0){
count += pow(2, temp);
}
temp++;
n >>= 1;
}
return count;
}
int main(){
int n = 20;
cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl;
return 0;
}输出
如果运行上述代码,它将生成以下输出:
Count of smaller numbers whose XOR with n produces greater value are: 11
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP