P1015 #1#2#3WA
查看原帖
P1015 #1#2#3WA
235696
muvum楼主2020/8/25 17:19
#include<bits/stdc++.h>
using namespace std;
const int N=305;
int n,a[N],b[N],len,i,ans=0;
string s;
inline void change(){
    for(i=len-1;i>=0;i--){
        if(s[i]>='0'&&s[i]<='9')
            b[len-i]=s[i]-'0';
        if(s[i]>='A'&&s[i]<='F')
            b[len-i]=s[i]-'A'+10;
    }
}
inline void add(){
    for(i=1;i<=len;i++)
        b[i]+=b[len-i+1];
    for(i=1;i<=len;i++){
        if(b[i]>=n){
            b[i+1]+=b[i]/n;
            b[i]%=n;
        }
    }
    if(b[len+1]>0) len++;
}
inline bool check(){
    for(i=1;i<=len;i++)
        if(b[i]!=b[len-i+1])
            return false;
    return true;
}
int main(){
    cin>>n;
    cin>>s;
    len=s.length();
    change();
    while(!check()){
        ++ans;
        if(ans>30){
            cout<<"Impossible!";
            return 0;
        }
        add();
    }
    printf("STEP=%d",ans);
    return 0;
}

输入

10 87

会输出

Impossible!

???!

2020/8/25 17:19
加载中...