大数问题,字符串处理。
// 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;
}