luogu_1015 回文数

#include<bits/stdc++.h>
using namespace std;
int n,a[1010],t,b[1010];
string m;
void add(){
for(int i=1;i<=a[0];i++)b[a[0]-i+1]=a[i];
for(int i=1;i<=a[0];i++){
a[i]+=b[i]; a[i+1]+=a[i]/n; a[i]%=n;
}
if(a[a[0]+1]>0)a[0]++;
}
bool check(){
for(int i=1;i<=a[0]/2;i++)if(a[i]!=a[a[0]-i+1])return false;
return true;
}
int main(){
cin>>n>>m; a[0]=m.size();
for(int i=0;i<a[0];i++){
if(m[i]>='A')a[i+1]=m[i]-'A'+10;
else a[i+1]=m[i]-'0';
}
while(t<31){
t++;
add();
if(check()){printf("STEP=%d ",t); return 0;}
}
puts("Impossible!");
return 0;
}
原文地址:https://www.cnblogs.com/codetogether/p/7263011.html