哪里错了

//2017年4月25日22:52:04
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;

const int maxn = 1001;
string s;
int a[maxn], b[maxn];
int n;

bool huiwen(int b[], int len){ 
    for(int i=0;i<len/2;i++){
        if(b[i] != b[len-1-i])
            return false;
    }
    return true;
}

int main(){
    cin >> n;
    cin >> s;
    int len = s.length();
    for(int i=0;i<len;i++){
        if(s[i] < 65)
            a[i] = s[len-1-i]-'0';
        else
            a[i] = s[len-1-i]-55;
    }
    //cout << len << endl;
    int i=0;
    for(int j=0;j<len;j++){
        b[j] = a[len-j-1];
        //cout << b[j] << endl;
    }
    int step = 0;
    while(!huiwen(a, len) && step<=30){
        for(int j=0;j<len;j++){
            if(len-1-j != j){
                a[j] += b[j];
                a[len-1-j] += b[len-1-j];
            }
        }
        for(int i=0;i<len;i++)
            if(a[i]>=n){
                a[i+1] += a[i]/n;
                a[i] %= n;
            }
        if(a[len]>=n){
            a[len+1] += a[len]/n;
            a[len] %= n;
            len++;
        }
        step++;
    }
    if(step>30)
        printf("Impossible");
    else 
        printf("STEP=%d", step);
    
    
    

    return 0;
}


0 条评论

目前还没有评论...

信息

ID
1304
难度
5
分类
模拟 点击显示
标签
递交数
8066
已通过
2523
通过率
31%
被复制
28
上传者