[PAT-A 1019]General Palindromic Number

在这里插入图片描述
题目大意:
给定一个十进制数n,求该十进制数转换为b进制后的序列是否为回文序列。

思路:
1.进制转换,10进制n转换为b进制,除积取余法,ans[表示结果],输出时倒着遍历
也可以用栈,但是本题要判断回文序列,数组更方便。

do {
		ans[num++] = n % b;
		n /= b;
	} while (n != 0);

2.判断回文序列,num为数位个数

bool flag = true;
for (int i = 0; i <= num / 2; i++) {
		if (ans[i] != ans[num - i - 1]) {
			flag = false;
			break;
		}
	}

3.输出
倒叙输出数组,最后一个字符之后不能有空格

AC代码:

//PAT_A 1019
#include<cstdio>
using namespace std;
int main() {
	int n, b, num = 0, ans[50];
	bool flag = true;
	(void)scanf("%d %d", &n, &b);
	do {
		ans[num++] = n % b;
		n /= b;
	} while (n != 0);
	for (int i = 0; i <= num / 2; i++) {
		if (ans[i] != ans[num - i - 1]) {
			flag = false;
			break;
		}
	}
	if (flag == true)printf("Yes\n");
	else printf("No\n");
	for (int i = num - 1; i >= 0; i--) {
		printf("%d", ans[i]);
		if (i != 0)printf(" ");
	}
	return 0;
}

发布了101 篇原创文章 · 获赞 1 · 访问量 3048

猜你喜欢

转载自blog.csdn.net/weixin_44699689/article/details/103984424
今日推荐