Bitwise Operators
任务
给定一个集合 S={1,2,3,…,n},找到
- 小于给定整数k的a&b的最大值,其中a和b是集合S中两个整数。
- 小于给定整数k的a|b的最大值,其中a和b是集合S中两个整数。
- 小于给定整数k的a^b的最大值,其中a和b是集合S中两个整数。
其中a<b。
解答
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//Complete the following function.
void calculate_the_maximum(int n, int k) {
//Write your code here.
int max_and=0, max_or=0, max_xor=0;
int i,j;
for (i=1;i<n;i++){
for (j=i+1;j<n+1;j++){
if (((i&j)>max_and) && ((i&j)<k)){
max_and=i&j;
}
if (((i|j)>max_or) && ((i|j)<k)){
max_or=i|j;
}
if (((i^j)>max_xor) && ((i^j)<k)){
max_xor=i^j;
}
}
}
printf("%d\n%d\n%d\n", max_and, max_or, max_xor);
}
int main() {
int n, k;
scanf("%d %d", &n, &k);
calculate_the_maximum(n, k);
return 0;
}