1024 Palindromic Number

第一遍刷pat

测试用例提示

  • 2、3是这个数本来就是回文数(我在这被坑了一小下)
  • 最后一个就是数组别开太小,反正开50不行,我开了100

我的憨憨程序

#include
#include

using namespace std;

char N[100]={0},ans[100]={0};
int K,len,flag;

void add()
{
	int j=0,p=0,tmp;
	for(int i=len-1;i>=0;i--)
	{
		tmp=(N[i]-'0')+(N[len-1-i]-'0')+p;
		ans[j++]=tmp%10+'0';
		p=tmp/10;
	}
	if(p!=0)
		ans[j++]=p+'0';
	len=j;
	strcpy(N,ans);
}

void judge()
{
    flag=0;
	for(int j=0;j<len/2;j++)
	{
		if(N[j]!=N[len-1-j])
		{
			flag=1;
			break;
		}
	}
}

int main()
{

	scanf("%s%d",&N,&K);
	len=strlen(N);
	judge();
	if(flag==0)
	{
		printf("%s\n0\n",N);
		return 0;
	}
	for(int i=1;i<=K;i++)
	{
		add();
		judge();		
		if(flag==0)
		{
			printf("%s\n%d\n",ans,i);
			return 0;
		}
	}
	for(int i=len-1;i>=0;i--)//因为存的是反转形式的和,所以要倒序输出 
		printf("%c",ans[i]); 
	printf("\n%d\n",K);
	return 0;
} 

你可能感兴趣的:(PAT甲级真题练习)