P2084 进制转换
//https://www.luogu.com.cn/problem/P2084?contestId=96627
#include<iostream>
#include<stack>
//有坑:必须要用字符串保存输入的数字
#include<string>
#include<algorithm>
using namespace std;
stack <char> mystack;
int main()
{
int m;//m进制
cin>>m;
string n;
cin>>n;
//要将字符转换为数字保存于栈里
for(int i=n.size();i>=0;i--)
{
mystack.push(n[i]);
}
bool first = false;
int i = mystack.size()-1;
while(i>0)
{
//需要判断是否是第一次产生表达式
//栈中元素的数目减一就是此时进制的位数
char b = mystack.top();
mystack.pop();
if(first == false)
{
//是刚开始产生表达式
if(b == '0')
{
//出栈元素是0
i--;
}
else
{
printf("%c*%d^%d",b,m,i-1);
i--;
}
first = true;//更改标记
}
else
{
if (b == '0')
{
//出栈元素是0
i--;
}
else
{
printf("+%c*%d^%d", b, m, i - 1);
i--;
}
}
}
}