定义一个高精度加和回文函数就可以了
2024-04-25 13:48:12
发布于:湖北
38阅读
0回复
0点赞
还是把前面的回文函数拿回来改了改
重点是改了标注的地方
#include <bits/stdc++.h>
using namespace std;
int a[2000],b[2000],c[2000];
int n;
string adds(string s1,string s2)
{
for(int i=0;i<100;i++)
{
a[i]=0;
b[i]=0;
c[i]=0;
}
for(int i=0;i<s1.length();i++)
{
a[i] = s1[s1.length()-1-i]-'0';
}
for(int i=0;i<s2.length();i++)
{
b[i] = s2[s2.length()-1-i]-'0';
}
int d=0;
int lang = max(s1.length(),s2.length());
for (int i=0;i<lang ;i++)
{
int q=a[i]+b[i]+d;
if(q>=n)/////////////////////////////////////////////////
{
d=1;
}
else{d=0;}
c[i]=q%n;//////////////////////////////////////////////
}
if(d!=0){
c[lang]=d;
}
else{
lang--;
}
string s3="";
for(int i=lang;i>=0;i--)
s3+=c[i]+'0';
return s3;
}
string hw(string s1)
{
string s2="";
for(int i=s1.length()-1;i>=0;i--)
{
s2+=s1[i];
}
return s2;
}
int main()
{
cin>>n;
string m;
cin>>m;
int step=0;
while(m != hw(m) && step < 30 )
{
m = adds(m,hw(m) );
//cout<<m<<endl;
step++;
}
if(step==30){
printf("Impossible!");
}
else{
printf("STEP=%d",step);
}
return 0;
}
这里空空如也
有帮助,赞一个