这段代码太复杂了 用简单一点的方式
时间: 2024-03-23 10:37:59 浏览: 20
好的,以下是更简单的 C++ 代码。这个代码使用了一个函数 `reverse_bits` 来翻转二进制数的位,然后判断一个数在十进制和二进制下是否都是回文数。
```cpp
#include <iostream>
using namespace std;
bool is_palindrome(int x) {
int y = x, z = 0;
while (y > 0) {
z = z * 10 + y % 10;
y /= 10;
}
return x == z;
}
int reverse_bits(int x) {
int y = 0;
while (x > 0) {
y = (y << 1) | (x & 1);
x >>= 1;
}
return y;
}
bool is_double_palindrome(int x) {
return is_palindrome(x) && is_palindrome(reverse_bits(x));
}
void find_double_palindromes(int left, int right) {
for (int i = left; i <= right; i++) {
if (i % 2 == 0) {
continue;
}
if (is_double_palindrome(i)) {
cout << i << " ";
}
}
cout << endl;
}
int main() {
int left, right;
cin >> left >> right;
find_double_palindromes(left, right);
return 0;
}
```
这个算法的时间复杂度为 $O(N\log N)$,其中 $N$ 是数的最大值。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)