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
