C 程序用于找出小于给定值的 AND、OR 和 XOR 运算的最大值
cserver side programmingprogramming
假设我们有两个整数 k 和 n。我们的任务是执行三个运算;在所有数字对之间执行按位 AND、按位 OR 和按位 XOR,直到范围为 n。我们返回任何两对数字之间所有三个运算的最大值,这些运算小于给定值 k。
因此,如果输入为 n = 5,k = 5,则输出将为 4 3 4。
所有小于 5 的数字对之间的 AND、OR 和 XOR 运算的最大值分别为 4、3 和 4。我们可以看到,这些操作的值小于给定值 k 的值,即 5。
为了解决这个问题,我们将遵循以下步骤 −
- andMax := 0, orMax = 0, xorMax = 0
- value1 := 0, value2 = 0, value3 = 0
- 初始化 i := 1,当 i <= n 时,更新(将 i 增加 1),执行以下操作:
- value1 := i AND j
- value2 := i OR j
- value3 := i XOR j
- 如果 value1 > andMax 和 value1 < k,则 −
- andMax := value1
- 如果 value2 > orMax 且 value2 < k,则 −
- orMax := value2
- 如果 value3 > xorMax 且 value3 < k,则 −
- xorMax := value3
- print(andMax, orMax, xorMax)
示例
让我们看看下面的实现以便更好地理解 −
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> void solve(int n, int k) { int andMax = 0, orMax = 0, xorMax = 0; int value1 = 0, value2 = 0, value3 = 0; for (int i = 1; i <= n; i++) { for (int j = i+1; j <= n; j++) { value1 = i & j; value2 = i | j; value3 = i ^ j; if (value1 > andMax && value1 < k) andMax = value1; if (value2 > orMax && value2 < k) orMax = value2; if (value3 > xorMax && value3 < k) xorMax = value3; } } printf("%d %d %d ", andMax, orMax, xorMax); } int main() { solve(5, 5); return 0; }
输入
5, 5
输出
4 3 4