题目

解法1
点击查看代码
#include<iostream>
#include<vector>
using namespace std;
vector<int> transform(int n, int b) {
vector<int> ans;
while (n > 0) {
ans.push_back(n % b);
n /= b;
}
return ans;
}
bool check(const vector<int>& num) {
int len = num.size();
for (int i = 0; i < len / 2; i++) {
if (num[i] != num[len - i - 1]) return false;
}
return true;
}
int main() {
int n, b;
cin >> n >> b;
vector<int> num = transform(n, b);
if (check(num)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
for (int i = num.size() - 1; i >= 0; i--) {
cout << num[i];
if (i > 0) cout << " ";
}
cout << endl;
return 0;
}
一些心得
1、根据情况来考虑用vector容器还是string来存储进制转化后的数据。
本题中,输出格式要求数字之间用空格分隔,这意味着可以直接用数字表示,而不需要字母。
如果本题采用字母的话,测试用例不能全部通过
浙公网安备 33010602011771号