BigStar @ 2021-09-28 20:52:24
#include <iostream>
#include <map>
#include <stdio.h>
using namespace std;
char num[101] = {'0'};
char tempSum[101] = {'0'};
int numLen = 0;
int minLen = 0;
map<char, int> value;
int addOption(int base){
for(int i = numLen - 1; i>=0; --i){
if(num[i] != '0'){
break;
}
--minLen;
}
for(int i = 0; i < minLen; ++i){
tempSum[i + 1] = (value[num[i]] + value[num[minLen - i - 1]] + value[tempSum[i]]) / base + tempSum[i + 1];
int v= (value[num[i]] + value[num[minLen - i - 1]] + value[tempSum[i]]) % base;
if(v >= 10){
tempSum[i] = 10 - v + 'A';
} else {
tempSum[i] = v + '0';
}
}
if(tempSum[numLen] != '0'){
++numLen;
}
minLen = numLen;
for(int i = 0; i < numLen; ++i){
num[i] = tempSum[i];
tempSum[i] = '0';
}
for(int i = numLen - 1, j = 0; j < i; ++j, --i){
if(num[i] != num[j]){
return 1;
}
}
return 0;
}
int main(){
int n;
scanf("%d \n", &n);
char c;
for(int i = 0; i <101; ++i){
num[i] = '0';
tempSum[i] = '0';
}
while ((c = getchar()) != '\n')
{
num[numLen++] = c;
}
minLen = numLen;
for(int i = 0; i < 16; ++i){
if(i >= 10){
value.insert(pair<char, int >((i - 10) + 'A', i));
continue;
}
value.insert(pair<char, int >('0' + i, i));
}
bool b = true;
for(int i = numLen - 1, j = 0; j < i; ++j, --i){
if(num[i] != num[j]){
b = false;
}
}
if(b){
cout << "STEP=1";
return 0;
}
for(int i = 1; i <= 30; ++i){
if(!addOption(n)){
cout << "STEP=" << i;
return 0;
}
}
cout << "Impossible!";
return 0;
}
有没有大佬指点迷津π_π
by BigStar @ 2021-09-28 21:14:22
过了,看了其他帖子。不用getchar()就可以了
by wsxhh @ 2022-01-27 16:52:36
@BigStar 求问为什么不能用getchar()啊