酷代码 AI
菜单
服务商

C++程序:求解任意进制数经最少步数转换为回文数的奥秘

```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; string add(string num1, string num2, int n) { string result; int carry = 0; int i = num1.size() - 1, j = num2.size() - 1; while (i >= 0 || j >= 0 || carry) { int digit1 = (i >= 0) ? (isdigit(num1[i]) ? num1[i] - '0' : num1[i] - 'A' + 10) : 0; int digit2 = (j >= 0) ? (isdigit(num2[j]) ? num2[j] - '0' : num2[j] - 'A' + 10) : 0; int sum = digit1 + digit2 + carry; carry = sum / n; int digit = sum % n; if (digit < 10) { result.push_back(digit + '0'); } else { result.push_back(digit - 10 + 'A'); } i--; j--; } reverse(result.begin(), result.end()); return result; } bool isPalindrome(string num) { int left = 0, right = num.size() - 1; while (left < right) { if (num[left] != num[right]) { return false; } left++; right--; } return true; } int main() { int n; string m; cin >> n >> m; int steps = 0; while (steps <= 30) { if (isPalindrome(m)) { cout << steps << endl; return 0; } string reversed = m; reverse(reversed.begin(), reversed.end()); m = add(m, reversed, n); steps++; } cout << "Impossible" << endl; return 0; } ``` ######[AI问答 | 491点数解答 | 2025-09-26 19:16:14]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]