#include <iostream> #include <algorithm> #include <stdlib.h> #include <string.h> #include <vector> using namespace std; char s1[200]; char s2[200]; char *reverse(char *s) { if(s==NULL) return NULL; int end = strlen(s) -1; int begin = 0; char temp; while(begin <= end) { temp = s[begin]; s[begin] = s[end]; s[end] = temp; begin++; end --; } return s; } bool if_Palindromic(char *s) //判断是否是回文数 { int end = strlen(s)-1; int begin = 0; while(begin <= end) { if(s[begin]!=s[end]) return false; begin++; end --; } return true; } char *chars_add(char *a,char *b) { int i,temp; int len = strlen(a); int carry = 0; for(i=len-1;i>=0;i--) { temp = (a[i]-'0')+(b[i]-'0') + carry; a[i]= temp%10 + '0'; carry = temp/10; } if(carry > 0) //末尾有进位,则整体往后移动一位,放置进位 { for(i = len-1;i>=0;i--) a[i+1] = a[i]; a[len+1] = 0; a[0] = carry + '0'; } return a; } int main() { int i,j,k,len1,temp,len2; int step; while(scanf("%s %d",s1,&k)!=EOF) { if(if_Palindromic(s1)) { printf("%s\n0\n",s1); continue; } step = 0; while(step < k) { strcpy(s2,s1); reverse(s1); chars_add(s1,s2); step++; if(if_Palindromic(s1)) break; } printf("%s\n%d\n",s1,step); } return 0; }