25分求助
查看原帖
25分求助
565669
Marrelia楼主2022/12/22 09:14

只有#1 AC

#include <iostream>
using namespace std;

const int N = 309;
int a[N], b[N], n, len;
string s1;
int step = 1;

void add();
void reserve();
bool pd();

int main() {
    scanf("%d", &n);
    cin >> s1;
    for (int i = 0; i < s1.length(); ++i)
        if (s1[i] <= '9' && s1[i] >= '0') {
            a[i] = s1[i] - '0';
        }
        else {
            a[i] = s1[i] - 'A' + 10;
        }
    len = s1.length();
    /*for (int i = 0; i < len; ++i) {
        cout << a[i] << endl;
    }
    cout << len << endl;*/
    while (!pd()) {
        reserve();
        add();
        ++step;
    }
    if (step <= 30) {
        printf("STEP=%d\n", step);
    }
    else {
        printf("Impossible!\n");
    }
    return 0;
}

void add() {
    /*for (int i = 0; i < len; ++i) {
        cout << a[i];
    }
    cout << endl;
    for (int i = 0; i < len; ++i) {
        cout << b[i];
    }
    cout << endl << endl << step << " " << len << endl << endl << endl;*/
    for (int i = 0; i < len; ++i) {
        a[i] = a[i] + b[i];
    }
    for (int i = 0; i < len; ++i) {
        if (a[i] >= n) {
            a[i + 1]++, a[i] -= n;
            //        cout << a[i];
        }
    }
    if (a[len + 1] > 0) {
        ++len;
    }
}

void reserve() {
    for (int i = 0; i < len; ++i) {
        b[i] = a[len - i - 1];
    }
}

bool pd() {
    for (int p1 = 0, p2 = len - 1; p1 < p2; ++p1, --p2)
        if (a[p1] != a[p2]) {
            return false;
        }
    return true;
}
2022/12/22 09:14
加载中...