欢迎光临散文网 会员登陆 & 注册

P2084 进制转换

2023-03-06 22:14 作者:仓鼠翞  | 我要投稿

//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--;
           }
       }
   }
}

P2084 进制转换的评论 (共 条)

分享到微博请遵守国家法律