75pts求调
查看原帖
75pts求调
1420626
UrakSu楼主2025/7/1 20:19
#include<bits/stdc++.h>
using namespace std;

int MOD;
char ss[1e6];
int s[1e6],s_[1e6];
int l;
void add(){
	for(int i = 1;i <= l;i ++){
		s_[l-i+1] = s[i];
	}
	for(int i = 1;i <= l+1;i ++){
		s[i] = s[i]+ s_[i];
		s_[i+1] += s[i]/MOD;
		s[i] = s[i]%MOD;
	}
	if(s[l+1]) l ++;
}
void out(){
	for(int i = l;i >= 1;i --)
		cout << s[i];
}
bool check(){
	for(int i = 1;i <= (l>>1);i ++)
		if(s[i] != s[l-i+1])return false;
	return true;
}
int main(){
	cin >> MOD;
	cin >> (ss+1);
	l = strlen(ss+1);
	for(int i = 1;i <= l;i ++){
		s[l-i+1] = ss[i]-'0';
	}
	int ans = 0;
	while(1){
		if(ans > 30){
			cout <<"Impossible!";
			return 0;
		}
		if(check()){
			cout <<"STEP="<<ans;
			return 0;
		}
		ans ++;
		add();
	}
	return 0;
}
2025/7/1 20:19
加载中...