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

相关文章