提交时间:2024-04-13 13:50:35
运行 ID: 45262
#include<bits/stdc++.h> using namespace std; int n; bool check(vector<int> x){ int len=(int)x.size(); for(int i=0;i<len/2;i++){ if(x[i]!=x[len-i-1]) return false; } return true; } vector<int> add(vector<int> x,vector<int> y){ vector<int> res; int ad=0; for(int i=0;i<(int)x.size();i++){ int tmp=ad+x[i]+y[i]; ad=tmp/n; res.push_back(tmp%n); } while(ad){ res.push_back(ad%n); ad/=n; } return res; } void solve() { cin>>n; string s; cin>>s; vector<int> x; for(int i=(int)s.size()-1;i>=0;i--){ if(s[i]>='0'&&s[i]<='9') x.push_back(s[i]-'0'); else x.push_back(int(s[i]-'A')+10); } if(check(x)){ cout<<"STEP=0"; } else{ for(int i=1;i<=30;i++){ vector<int> tmp; for(int i=(int)x.size()-1;i>=0;i--){ tmp.push_back(x[i]); } x=add(x,tmp); if(check(x)){ cout<<"STEP="<<i; return ; } } cout<<"Impossible!"; } } int main() { solve(); return 0; }