- 回文数
- 2017-04-26 13:31:41 @
//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 条评论
目前还没有评论...