This commit is contained in:
e2hang
2025-08-14 12:59:59 +08:00
parent 8bfe9f31f3
commit 5ebd540fa5
4 changed files with 115 additions and 23 deletions

View File

@@ -0,0 +1,52 @@
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int charToInt(char c) {
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'A' && c <= 'Z') return c - 'A' + 10;
if (c >= 'a' && c <= 'z') return c - 'a' + 10;
return 0;
}
char intToChar(int x) {
if (x < 10) return '0' + x;
return 'A' + (x - 10);
}
string add(const string& a, int jz) {
string b(a);
reverse(b.begin(), b.end());
string tmp(a.size() + 1, '0');
int carry = 0;
for (size_t i = 0; i < a.size(); i++) {
int ia = charToInt(a[i]);
int ib = charToInt(b[i]);
int sum = ia + ib + carry;
carry = sum / jz;
tmp[i] = intToChar(sum % jz);
}
if (carry > 0) tmp[a.size()] = intToChar(carry);
else tmp.pop_back();
return tmp;
}
bool check(const string& x) {
return equal(x.begin(), x.begin() + x.size()/2, x.rbegin());
}
int main(){
int jz;
string n;
cin >> jz >> n;
for (int i = 0; i <= 30; i++) {
if (check(n)) {
cout << "STEP=" << i << endl;
return 0;
}
n = add(n, jz);
}
cout << "Impossible!" << endl;
}