学会用reverse(c,c+n),reverse(c.begin(),c.end())
在algorithm中
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct bign{
int d[100];
int len;
bign(){
memset(d,0,sizeof(d));
len=0;
}
};
bign change(char c[]){
bign a;
for(int i=strlen(c)-1;i>=0;i--){
a.d[a.len++]=c[i]-'0';
}
return a;
}
bign add(bign a,bign b){
bign c;
int jin=0;
for(int i=0;i<a.len||i<b.len;i++){
int tmp=jin+a.d[i]+b.d[i];
c.d[c.len++]=tmp%10;
jin=tmp/10;
}
if(jin!=0){
c.d[c.len++]=jin;
}
return c;
}
bool is(bign a){
bool flag=true;
for(int i=0;i<a.len-i-1;i++){
if(a.d[i]!=a.d[a.len-i-1]){
flag=false;
break;
}
}
return flag;
}
void myprint(bign a){
for(int i=a.len-1;i>=0;i--){
printf("%d",a.d[i]);
}
printf("\n");
}
bign tran(bign cc){
char a[10000],b[10000],c[10000];
for(int i=0;i<cc.len;i++){
c[i]=cc.d[i]+'0';
}
c[cc.len]='\0';
strcpy(a,c);
reverse(c,c+strlen(c));
strcpy(b,c);
bign aa=change(a);
bign bb=change(b);
bign ans=add(aa,bb);
return ans;
}
int main(){
freopen("in.txt","r",stdin);
char c[10000];
int t;
scanf("%s %d",c,&t);
bign cc=change(c);
if(is(cc)){
myprint(cc);
printf("0\n");
}else{
bign ans=cc;
int cnt=0;
for(int i=1;i<=t;i++){
ans=tran(ans);
cnt++;
if(is(ans)){
break;
}
}
myprint(ans);
printf("%d\n",cnt);
}
return 0;
}