简单高精度习题
高精度 + 高精度
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string s;
int k;
int a[350],b[350];
bool judge(string s) //判断是否回文
{
string ss=s;
reverse(ss.begin(),ss.end());
if(s==ss)
return 1;
else
return 0;
}
int add(string s1,string s2) //相加并转换
{
for(int i=0;i<s1.length();i++)
{
a[i]=s1[s1.length()-i-1]-'0';
}
for(int i=0;i<s2.length();i++)
{
b[i]=s2[s2.length()-i-1]-'0';
}
int len=max(s1.length(),s2.length());
for(int i=0;i<len;i++)
{
if(a[i]+b[i]>=10)
{
a[i+1]+=(a[i]+b[i])/10;
}
a[i]=(a[i]+b[i])%10;
}
if(a[len]>0)
len++;
return len;
}
int main()
{
cin>>s>>k;
int step=0;
while(k--)
{
if(judge(s)==1)
{
cout<<s<<endl;
cout<<step<<endl;
break;
}
else
{
string ss=s;
reverse(ss.begin(),ss.end());
int w=add(s,ss);
s="";
for(int i=w-1;i>=0;i--)
s+=(a[i]+'0');
step++;
if(k==0)
{
cout<<s<<endl;
cout<<step<<endl;
break;
}
}
}
return 0;
}