大数问题,字符串处理。
// 1024. Palindromic Number.cpp: 主项目文件。 #include "stdafx.h" #include <cstdio> #include <cstring> bool isPalindromic(char *str){ int length=strlen(str); for(int i=0,j=length-1;i<=j;i++,j--){ if(str[i]!=str[j]) return false; } return true; } void reverserNumber(char *str,char *rev){ int length=strlen(str),cnt=0; for(int i=length-1;i>=0;i--) rev[cnt++]=str[i]; rev[cnt]='\0'; } void plus(char *str,char *rev){ char sum[151]; memset(sum,0,sizeof(sum)); int length=strlen(rev),cnt=0,in=0; for(int i=length-1;i>=0;i--){ int temp=str[i]-'0'+rev[i]-'0'+in; sum[cnt++]=temp%10+'0'; in=temp/10; } if(in!=0) sum[cnt++]=in+'0'; int j=0; for(int i=cnt-1;i>=0;i--) str[j++]=sum[i]; str[j]='\0'; } int main() { char str[151],rev[151]; int k; scanf("%s%d",str,&k); if(isPalindromic(str)){ printf("%s\n0\n",str); return 0; } for(int i=1;i<=k;i++){ reverserNumber(str,rev); plus(str,rev); if(isPalindromic(str)){ printf("%s\n%d\n",str,i); return 0; } } if(!isPalindromic(str)) printf("%s\n%d\n",str,k); return 0; }