为啥25分啊(只过最后一个点)
查看原帖
为啥25分啊(只过最后一个点)
678057
_TeaClaudz_楼主2023/8/7 20:44
#include<bits/stdc++.h>
using namespace std;

int n;
char st[7] = "ABCDEF";

void add(string &a) {
    string b = a;
	reverse(b.begin(), b.end());
    int na[105], nb[105], l = a.length();
    for(int i = 0; i < l; ++i) {
        na[l - i - 1] = isdigit(a[i])?a[i]-'0':a[i]-'A'+10;
        nb[l - i - 1] = isdigit(b[i])?b[i]-'0':b[i]-'A'+10;
    }
    for(int i = 0; i < l; ++i) {
        na[i] += nb[i];
        if(na[i] >= n) na[i+1]+=na[i]/n, na[i]%=n;
    }
    if(na[l]) l++;
    for(int i = 0; i < l; ++i) {
        a[i] = na[l - i - 1] < 10?na[l-i-1]+'0':st[na[l-i-1]-10];
    }
}

int main() {
    string a, t;
    cin >> n >> a;
    for(int i = 0; i <= 30; ++i) {
        t = a;
        reverse(t.begin(), t.end());
        if(t == a) {
            cout << "STEP=" << i;
            return 0;
        }
        add(a);
    }
    cout << "Impossible!";
    return 0;
}
2023/8/7 20:44
加载中...