蒟蒻求助,爆0
查看原帖
蒟蒻求助,爆0
528243
wangxinlong_orange楼主2022/3/28 18:57
#include<iostream>
using namespace std;
int n;
string m;
int a[401];
int sum;
int lon;
bool judge(int x){//判断回文
	int t=x/2;
	for(int i=0;i<=t;i++){
		if(a[i]!=a[lon-i]) return 0;
	}
	return 1;
}
int main(){
	cin>>n>>m;//输入
	lon=m.size();
	for(int i=0;i<=lon;i++) a[i]=m[i]-'0';//转化成数组
	
	while(1){
		if(sum>30){//超过30就结束
			cout<<"Impossible!";
			return 0;
		}
		for(int i=0;i<=lon;i++) a[i]=a[i]+a[lon-i];//高精加
		for(int i=0;i<=lon;i++){
			a[i+1]=a[i+1]+a[i]/n;
			a[i]=a[i]%n;//进位
		}
		if(a[lon+1]>0) lon++;//判断是否增加了一位数
		if(judge(lon)){//如果是回文就结束
			cout<<"STEP="<<sum;
			return 0;
		}
	}
}
2022/3/28 18:57
加载中...