酷代码 AI
菜单

C++ 中 int 型整数内码是一个 32 位的 01 序列,该 01 序列有些是对称的,有些是不对称的。 对于给定的一个整数,在一些场合,需要判断其整数内码的对称性。 输入 输入中含有一个整数 n 。 输出 如果 n内码对称,输出"YES",否则输出"NO"。 样例输入 复制 2147483646 样例输出 复制 YES

以下是一个用于判断 C++ 中 `int` 型整数内码是否对称的程序: ```cpp #include <iostream> using namespace std; // 判断整数内码是否对称的函数 bool isBinaryPalindrome(int n) { // 用于存储整数的二进制表示 int binary[32]; // 将整数转换为 32 位二进制表示 for (int i = 0; i < 32; ++i) { binary[i] = (n >> i) & 1; } // 检查二进制表示是否对称 for (int i = 0; i < 16; ++i) { if (binary[i] != binary[31 - i]) { return false; } } return true; } int main() { int n; // 读取输入的整数 cin >> n; // 判断内码是否对称并输出结果 if (isBinaryPalindrome(n)) { cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; } ``` 代码解释: 1. `isBinaryPalindrome` 函数: - 该函数接受一个 `int` 型整数 `n` 作为参数,用于判断其 32 位二进制内码是否对称。 - 首先,创建一个长度为 32 的数组 `binary` 用于存储整数的二进制表示。 - 通过位运算将整数 `n` 转换为 32 位二进制表示,并存储在 `binary` 数组中。 - 然后,使用一个循环检查数组的前半部分和后半部分是否对称。如果发现不对称的位置,则返回 `false`。 - 如果整个循环都没有发现不对称的位置,则返回 `true`。 2. `main` 函数: - 读取输入的整数 `n`。 - 调用 `isBinaryPalindrome` 函数判断其 32 位二进制内码是否对称。 - 根据判断结果输出 "YES" 或 "NO"。 复杂度分析: - 时间复杂度:$O(1)$,因为只需要处理 32 位的二进制数。 - 空间复杂度:$O(1)$,只使用了一个长度为 32 的数组。 [2026-01-23 19:44:43 | AI问答 | 560点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多