西江月
查看原帖
西江月
1165586
lizishi楼主2025/1/22 21:52
西江月·WrongAnswer
WA别枝惊鹊,AC半夜鸣蝉。25分里说丰年,听取WA声一片。
仅一个AC外,两三点WA前。旧时茅店社林边,路转AC忽见。

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;

void getSum(int numa[], int numb[], int len, int base, int* start) {
    int ans[len + 1] = {0};
    for (int i = len; i > 0; i--) {
        ans[i] += numa[i] + numb[i];
        if (ans[i] > base - 1) {
            ans[i] -= base;
            ans[i - 1]++;
        }
    }
    for (int i = 0; i <= len; i++) {
        start[i] = ans[i];
    }
}

bool palindrome(int arr[], int len) {
    int center = len / 2;
    for (int i = 0; i < center; i++) {
        if (arr[i] != arr[len - i - 1]) {
            return 0;
        }
    }
    return 1;
}

void reverse_string(int* s, int len, int* ans) {
    for (int i = 0; i < len; i++) {
        ans[i] = s[len - i - 1];
    }
}

int main() {
    int n;
    char m[105];
    cin >> n >> m;
    int len = strlen(m);
    int num[len];
    for (int i = 0; i < len; i++) {
        num[i] = m[i] - (m[i] < 60 ? 48 : 55);
    }
    for (int i = 1; i <= 30; i++) {
        int temp[len];
        reverse_string(num, len, temp);
        int ans_temp[len];
        getSum(num, temp, len, n, ans_temp);
        if (palindrome(ans_temp, len)) {
            cout << "STEP=" << i;
            return 0;
        }
    }
    cout << "Impossible!";
    return 0;
}
2025/1/22 21:52
加载中...