A1019:General Palindromic Number(20')

思路:利用进制转换模板先转化为b进制数。这里注意要用do while型,用while型可能会部分正确。同时,得到转换后的位数i。然后,进行回文判断,只需比较i/2次。只要有一次循环不符合回文条件,就输出“No”,直接退出循环。最后输出b进制数要逆序输出,不是回文的话如果正序输出就会出错。

代码:

#include<cstdio>
int main(){
	int n,b;
	int n1[100010];
	scanf("%d %d",&n,&b);
	int i = 0;
	//应该改用do while,防止第一次就是0
	/*
	while(n!=0){
		n1[i++] = n%b;
		n /= b;
	}
	*/
	do{
		n1[i++] = n%b;
		n /= b;
	}while(n!=0);
	for(int j = 0;j <= i/2;j ++){  //这里是j<=i/2
		if(n1[j] != n1[i-j-1]){
			printf("No\n");
			break;
		}
		if( j == i/2 && n1[j] == n1[i-j-1]){
			printf("Yes\n");
		}
	}
	for(int j = i-1;j >= 0;j --){
		printf("%d",n1[j]);
		if(j != 0) printf(" ");
	}
	printf("\n");
	return 0;
}

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~

全部评论

相关推荐

02-12 00:59
已编辑
哈尔滨工业大学 产品经理
华为 软件开发岗 20.6*16薪 本科
点赞 评论 收藏
分享
02-01 19:48
门头沟学院 Java
神哥了不得:(非引流)直接暑期吧,没时间日常了,老鱼简历把水印去了,或者换个模板,简历字体大小都不太行,建议换2个高质量的项目,面试应该还会再多一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务