题目:点击打开链接
注意:
1、进制转换最有效的方法依然是短除法
2、empty()由于设计问题,在最后的某些边界情况出现BUG,比如内存错误,所以不要太信赖empty()(这个题可能没问题,其他题不一定),手动判0。
3、注意输出格式。
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> tar;
int radix;//进制数
int tarnum;//待转换的数
while (cin>>tarnum>>radix)
{
if (tarnum==0)//请单独判断,否则empty()会出现error,不知道为什么
{
cout<<0<<endl;
continue;
}
while (tarnum>0) //条件注意!
{
tar.push(tarnum%radix); //存余数
tarnum=tarnum/radix; //利用N进制的定义,短除法,最后从下往上输出
}
while (tar.empty()==0)//不空的时候
{
cout<<tar.top(); //按位输出
tar.pop();
}
cout<<endl;//注意换行
}
}