题目
题目大意
如果一个十进制数在其它进制下为回文数,则输出“Yes”,否则输出“No”。再输出该回文数。
思路
简单模拟,十进制转n进制,除留取余法。需要注意,如果用字符串存储,当余数>9时,用reverse会改变这个余数,测试点2和测试点4报错。因此用数组来存储。vector容器可以直接通过==来判断两个数组是否相等。
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v, v2;
void transfer(int n, int b){
string res = "";
if (n == 0) res = "0"; // 当n = 0的情况
while (n != 0){
v.push_back(n % b); // 余数可能>9,用字符串不能通过测试点2和测试点4
n /= b;
}
}
int main(){
int n, b;
cin >> n >> b;
transfer(n, b);
v2 = v; // 拷贝
reverse(v2.begin(), v2.end());
if (v == v2){ // vector容器可以直接用=比较是否相等
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
for (int i = 0; i < (int)v2.size(); i++){
if (i) cout << " ";
cout << v2[i];
}
cout << endl;
return 0;
}
标签:PAT,测试点,Palindromic,int,Number,v2,vector,余数,include
From: https://blog.csdn.net/weixin_74092648/article/details/145266010