题解
2025-06-08 12:40:29
发布于:浙江
1阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
string s;
int n;
struct Bigint{
int a[100005],len;
Bigint(){
len=1;
memset(a,0,sizeof(a));
}
Bigint operator=(string s){
len=s.size();
bool flag=false;
for(int i=1;i<=len;i++){
if(s[len-1]>='0'&&s[len-i]<='9') a[i]=s[len-i]-'0';
else a[i]=s[len-i]-'A'+10;
}
return *this;
}
Bigint operator+(Bigint x){
Bigint ans;
if(x.len>len) ans.len=x.len;
else ans.len=len;
for(int i=1;i<=ans.len;i++){
ans.a[i]+=x.a[i]+a[i];
ans.a[i+1]+=ans.a[i]/n;
ans.a[i]%=n;
}
if(ans.a[ans.len+1]>0) ans.len++;
return ans;
}
void printf(){
for(int i=len;i>=1;i--){
cout<<a[i];
}
}
};
Bigint a,b;
Bigint deal(Bigint x){
for(int i=1;i<=x.len/2;i++){
swap(x.a[i],x.a[x.len-i+1]);
}
return x;
}
bool check(Bigint x){
for(int i=1;i<=x.len/2;i++){
if(x.a[i]!=x.a[x.len-i+1]) return false;
}
return true;
}
int main(){
cin>>n>>s;
a=s;
b=deal(a);
for(int i=1;i<=30;i++){
a=a+b;
if(check(a)){
cout<<"STEP="<<i;
return 0;
}
b=deal(a);
}
cout<<"Impossible!";
return 0;
}
这里空空如也
有帮助,赞一个