#include <iostream>
using namespace std;
const int N = 1000;
int c[N];
int logic(int x, int y) {
return (x & y) ^ ((x ^ y) | (~x & y));
}
void generate(int a, int b, int *c) {
for (int i = 0; i < b; i++)
c[i] = logic(a, i) % (b + 1);
}
void recursion(int depth, int *arr, int size) {
if (depth <= 0 || size <= 1) return;
int pivot = arr[0];
int i = 0, j = size - 1;
while (i <= j) {
while (arr[i] < pivot) i++;
while (arr[j] > pivot) j--;
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++; j--;
}
}
recursion(depth - 1, arr, j + 1);
recursion(depth - 1, arr + i, size - i);
}
int main() {
int a, b, d;
cin >> a >> b >> d;
generate(a, b, c);
(本题为阅读程序 / 完善程序,完整题目与测试数据见平台)看到复杂位运算 → 先真值表化简;看到递归分治 → 想排序复杂度。
logic 函数形式复杂,易误判为与/或;快速排序深度不足时误以为有序。
考点:位运算化简|快速排序(分治)|时间复杂度
逻辑函数化简为按位异或;递归实现有限深度快速排序。