75分求调
查看原帖
75分求调
1080304
Mario_iostream楼主2025/2/2 23:06
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int toDecimal(string num, int base) {
	int result = 0;
	for (char c : num) {
		if (isdigit(c)) result = result * base + (c - '0');
		else result = result * base + (c - 'A' + 10);
	}
	return result;
}
string fromDecimal(int num, int base) {
	string result;
	while (num > 0) {
		int remainder = num % base;
		if (remainder < 10) result = char('0' + remainder) + result;
		else result = char('A' + remainder - 10) + result;
		num /= base;
	}
	return result;
}
bool isPalindrome(string num) {
	string reversed = num;
	reverse(reversed.begin(), reversed.end());
	return num == reversed;
}
string add(string num, int base) {
	string reversed = num;
	reverse(reversed.begin(), reversed.end());
	int decimalNum = toDecimal(num, base);
	int decimalReversed = toDecimal(reversed, base);
	int sum = decimalNum + decimalReversed;
	return fromDecimal(sum, base);
}
int main() {
	ios::sync_with_stdio(false);
	int base;
	string num;
	cin >> base >> num;
	int steps = 0;
	while (!isPalindrome(num) && steps < 30) {
		num = add(num, base);
		steps++;
	}
	if (steps < 30) cout << "STEP=" << steps << endl;
	else cout << "Impossible!" << endl;
	return 0;
}
2025/2/2 23:06
加载中...