ZOJ 1078 回文数

判断数N在k进制下是否为回文数,其中k∈[2,16],输出K。

wa了一次,原因:在如果不存在k的情况下,不小心在n前面加了个&  输出了n的地址,导致错误。

#include"stdio.h"
int s[50000];
int main()
{
	//freopen("1078b.txt","w",stdout);
	int n;
	while(scanf("%d",&n)!=EOF,n)
	{
		int base[16];		
		int i,k=0;
		for(i=2;i<=16;i++)
		{
			int j=0,tmp=n;
			for(j;tmp;j++)
			{
				s[j]=tmp%i;
				tmp/=i;
			}
			tmp=j;
			for(j=0;j<tmp/2;j++)
			{
				if(s[j]!=s[tmp-1-j])
					break;
			}
			if(j>=tmp/2){
				base[k]=i;
				k++;
			}

		}
		if(k)
		{
			printf("Number %d is palindrom in basis",n);
			for(i=0;i<k;i++)
				printf(" %d",base[i]);
			printf("\n");
		}
		else
			printf("Number %d is not a palindrom\n",n);
	}
	return 0;
}

posted @ 2011-05-13 11:42  Ac_smile  阅读(305)  评论(0编辑  收藏  举报