题目


解法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来存储进制转化后的数据。

本题中,输出格式要求数字之间用空格分隔,这意味着可以直接用数字表示,而不需要字母。

如果本题采用字母的话,测试用例不能全部通过