P2084 進制轉換
//https://www.luogu.com.cn/problem/P2084?contestId=96627
#include<iostream>
#include<stack>
//有坑:必須要用字符串保存輸入的數(shù)字
#include<string>
#include<algorithm>
using namespace std;
stack <char> mystack;
int main()
{
? ?int m;//m進制
? ?cin>>m;
? ?string n;
? ?cin>>n;
? ?//要將字符轉換為數(shù)字保存于棧里
? ?for(int i=n.size();i>=0;i--)
? ?{
? ? ? ?mystack.push(n[i]);
? ?}
? ?bool first = false;
? ?int i = mystack.size()-1;
? ?while(i>0)
? ?{
? ? ? ?//需要判斷是否是第一次產(chǎn)生表達式
? ? ? ?//棧中元素的數(shù)目減一就是此時進制的位數(shù)
? ? ? ?char b = mystack.top();
? ? ? ?mystack.pop();
? ? ? ?if(first == false)
? ? ? ?{
? ? ? ? ? ?//是剛開始產(chǎn)生表達式
? ? ? ? ? ?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--;
? ? ? ? ? ?}
? ? ? ?}
? ?}
}