Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
325103 王栎州 【C6-2】小丽找半个回文数? C++ 通过 100 1 MS 256 KB 1988 2025-06-01 21:09:01

Tests(2/2):


#include<bits/stdc++.h> using namespace std; // 判断一个数是否为回文数 bool isPalindrome(int num) { string s = to_string(num); string reversed = s; reverse(reversed.begin(), reversed.end()); return s == reversed; } // 判断一个字符串是否为回文 bool isPalindromeString(const string& s) { int left = 0; int right = s.length() - 1; while (left < right) { if (s[left] != s[right]) return false; left++; right--; } return true; } // 将数字转换为二进制字符串 string toBinary(int num) { if (num == 0) return "0"; string result = ""; while (num > 0) { result += (num % 2) ? '1' : '0'; num /= 2; } reverse(result.begin(), result.end()); return result; } // 将数字转换为十六进制字符串 string toHex(int num) { if (num == 0) return "0"; string result = ""; while (num > 0) { int remainder = num % 16; if (remainder < 10) { result += remainder + '0'; } else { result += remainder - 10 + 'A'; } num /= 16; } reverse(result.begin(), result.end()); return result; } int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; } for (int num : nums) { // 跳过本身是回文数的情况 if (isPalindrome(num)) continue; // 检查二进制表示 string binary = toBinary(num); bool isBinaryPalindrome = isPalindromeString(binary); // 检查十六进制表示 string hex = toHex(num); bool isHexPalindrome = isPalindromeString(hex); // 如果二进制或十六进制是回文数,则输出 if (isBinaryPalindrome || isHexPalindrome) { cout << num << endl; } } return 0; }


测评信息: