C程序找出小于给定值的AND、OR和XOR运算的最大值
假设我们有两个整数k和n。我们的任务是执行三个操作;范围n以内的所有数字对之间的按位与、按位或和按位异或。我们返回小于给定值k的任意两对数字之间所有三个操作的最大值。
所以,如果输入像n=5,k=5,那么输出将是434。
所有小于5的数对之间的AND、OR和XOR运算的最大值分别为4、3和4。我们可以看到,这些操作的值都小于给定值k的值,即5。
示例
让我们看看以下实现以获得更好的理解-
#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