【题意】
判断一个数在给定的进制下是否是对称的数
【思路】
用队列和栈模拟进制转换过程,最后用栈来匹配即可
【注意点】
对于边界情况n=0要特殊处理,保证0能进栈
#include <iostream>
#include <queue>
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
int n,b;
queue<int> newNum;
queue<int> tmpQueue;
stack<int> tmpStack;
stack<int> check;
cin >> n >> b;
if(n==0){
tmpStack.push(0);
}
int tmp = n;
while(tmp){
tmpStack.push(tmp%b);
tmp /= b;
}
while(!tmpStack.empty()){
newNum.push(tmpStack.top());
tmpQueue.push(tmpStack.top());
tmpStack.pop();
}
int len = newNum.size();
for(int i=0; i<len/2; i++){
check.push(tmpQueue.front());
tmpQueue.pop();
}
if(len%2==1){
tmpQueue.pop();
}
while(!tmpQueue.empty()){
if(check.top()==tmpQueue.front()){
check.pop();
}
tmpQueue.pop();
}
if(check.empty()){
cout << "Yes";
}
else{
cout << "No";
}
cout << endl;
cout << newNum.front();
newNum.pop();
while(!newNum.empty()){
cout << " " << newNum.front();
newNum.pop();
}
system("pause");
return 0;
}