【1019 20 回文串】 General Palindromic Number

传送门

题意

给定数字 \(n\),进制 \(b\) ,求将数字 \(n\) 表示为 \(b\) 进制后是否为回文串

数据范围

\(0\leq n\leq 10^{9}\)
\(0\leq b\leq 10^{9}\)

题解

  • 转换之后双指针计算即可
  • 不能转化为字符串,\(b\) 过大后的余数不是一个字符有两个测试点过不了

Code

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, b; cin >> n >> b;
	vector<int> num;
	while (n) {
		num.push_back(n % b);
		n /= b;
	}

	bool flag = 1;
	for (int i = 0, j = num.size() - 1; i <= j; i++, j--) {
		if (num[i] != num[j]) {
			flag = 0;
			break;
		}
	}
	
	if (flag) cout << "Yes" << endl;
	else cout << "No" << endl;

	for (int i = num.size() - 1; i >= 0; i--) {
		cout << num[i];
		if (i) cout << ' ';
	}
}
posted @ 2021-02-03 01:12  Hyx'  阅读(52)  评论(0)    收藏  举报