第二个WA了
查看原帖
第二个WA了
919224
hehuan_haitang楼主2023/4/29 21:19
//问题在哪里?
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

int n;
bool is_(vector<int> &A)
{
    auto B = A;
    reverse(B.begin(), B.end());
    
    return A == B;
}

vector<int> add(vector<int> &A, vector<int> &B)
{
    vector<int> C;
    int t = 0;
    for (int i = 0; i < A.size(); i ++ )
    {
        t += A[i];
        t += B[i];
        
        C.push_back(t % n);
        t /= n;
    }
    
    if (t) C.push_back(t);
    
    return C;
}

int main()
{
    vector<int> A = {};
    string a;
    cin >> n >> a;
    for (int i = a.size() - 1; i >= 0; i -- ) 
    {
        if ('0' <= a[i] && a[i] <= '9') A.push_back(a[i] - '0');
        else A.push_back(a[i] - '@');
    }
    
    if (is_(A)) 
    {
        cout << "STEP=0";
        return 0;
    }
    // cout << endl;
    // for (int i = A.size() - 1; i >= 0; i -- )
    // {
    //     printf("%d", A[i]);
    // }
    // cout << endl;
    auto B = A;
    reverse(B.begin(), B.end());
    
    int i;
    for (i = 1; i <= 30; i ++ )
    {
        A = add(A, B);
        
        // for (int i = A.size() - 1; i >= 0; i -- )
        // {
        //     printf("%d", A[i]);
        // }
        // cout << endl;
        
        if (is_(A)) break;
        B = A;
        reverse(B.begin(), B.end());
    }
    
    if(i <= 30) printf("STEP=%d", i);
    else printf("Impossible!");
    
    return 0;
}
2023/4/29 21:19
加载中...