У меня есть задача:
Заданный набор S = {1,2,3,..., n}
, найти:
максимальное значение a&b
, которое меньше заданногоцелое число k
, где a
и b
(где a < b
) - два целых числа из набора S
.
максимальное значение a|b
, которое меньшечем указанное целое число k
, где a
и b
(где a < b
) - два целых числа из множества S
.
максимальное значение a^b
которое меньше заданного целого числа k
, где a
и b
(где a < b
) - два целых числа из множества S
.
Myкод не работает, хотя я не могу найти ошибку
Есть следующий тестовый пример:
Ввод: 5 4
Выход:
2
3
3
Однако мой вывод:
1382045904
24
3
Мой код:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void calculate_the_maximum(int n, int k) {
int max_and, max_or, max_xor = -1;
for (int a = 0; a < n; a++) {
for (int b = a + 1; b <= n; b++) {
int currently_and = a & b, currently_or = a | b, currently_xor = a ^ b;
if ((max_and < currently_and) && (currently_and < k)) {
max_and = currently_and;
}
if ((currently_or > max_or) && (currently_or < k)) {
max_or = currently_or;
}
if ((currently_xor > max_xor) && (currently_xor < k)) {
max_xor = currently_xor;
}
}
}
printf("%d\n%d\n%d\n", max_and, max_or, max_xor);
}