A7873.回文数
2025-01-20 20:58:39
发布于:江苏
4阅读
0回复
0点赞
主要考的是高精度进制加法和字符串的基础操作。我选择用自定义函数做
#include<iostream>
using namespace std;
string s="0123456789ABCDEFG";
string jzadd(int jz,string A,string B){
int a[205]={0},b[205]={0},la=A.length(),lb=B.length(),lm=(la>lb?la:lb),x=0;
for(int i=0;i<la;i++) a[i]=s.find(A[la-i-1],0);
for(int i=0;i<lb;i++) b[i]=s.find(B[lb-i-1],0);
for(int i=0;i<lm;i++){
x=(a[i]+b[i])/jz;
a[i+1]+=x;
a[i]=(a[i]+b[i])%jz;
}
A="";
for(int i=lm+x-1;i>=0;i--) A+=s[a[i]];
return A;
}
string backstr(string s){
string t;
for(int i=s.length()-1;i>=0;i--)
t+=s[i];
return t;
}
int main(){
int n,ans=0;
string m;
cin>>n>>m;
while(m!=backstr(m)){
if(ans>30){
cout<<"Impossible!";
return 0;
}
m=jzadd(n,m,backstr(m));
ans++;
}
cout<<"STEP="<<ans;
return 0;
}
这里空空如也
有帮助,赞一个