【字符串】P2084 进制转换-C++

题目描述
今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 :

1*2^4+0*2^3+1*2^2+0*2^1+1*2^0,

那么请你编程实现,将一个M进制的数N转换成十进制表示的式子。

注意:当系数为0时,该单项式要省略。

输入输出格式
输入格式:
两个数,M和N,中间用空格隔开。

输出格式:
共一行,一个十进制表示的式子。

输入输出样例
输入样例#1: 
2 10101
输出样例#1: 
1*2^4+1*2^2+1*2^0
说明
对于100%的数据,1<M<10,N的位数不超过1000。

这道题直接用字符串来完成就好了,代码实现很简单,实现如下:
ps.由于代码里面注释比较详细所以就不多做解释,具体看下面的代码哈

AC代码:

#include<bits/stdc++.h>//万能头文件,推荐 
using namespace std;
int main()
{
    int m,n_;//m为题中设定条件,n_表示字符串n的长度,下面定义; 
    bool first=true;//控制加号 
    string n;//用字符串进行判断 
    cin>>m>>n;//输入 
    n_=n.length();//获取字符串n的长度 
    for(int i=0;i<n_;i++)
    {
        if(n[i]=='0')continue;//如果系数为0就不输出,重新开始循环 
        if(n[i]!='0'&&first)//如果系数不为0就进行输出 
        {
            cout<<n[i]<<"*"<<m<<"^"<<n_-1-i;//如果是第一个就不输出加号 
            first=false;
            continue;//重新开始循环
        }
        if(n[i]!='0')//如果系数不为0就进行输出
        {
            cout<<"+"<<n[i]<<"*"<<m<<"^"<<n_-1-i;//不是第一个就输出加号 
            continue;//重新开始循环
        }
    }
    return 0;//别忘了它 
}

ov.

posted @ 2019-06-02 07:27  摸鱼酱  阅读(420)  评论(0编辑  收藏  举报