洛谷P2084

题目

原题地址
题目描述
今天小明学会了进制转换,比如(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

题解

弱智题目,一点新的数据都没生成,把N拆开一个一个输出就好了,不过这个+号有点麻烦,因为无法判断当前输出的数会不会是最后一个数(即从此位到末尾是否含有0),那么只能先把N的头打出来,然后在循环里的时候每个单项式的开头打个+了。

代码

#include 
using namespace std;
int main(int argc, const char * argv[]) {
    int M = -1;
    string N;
    cin >> M >> N;
    cout << N[0] << '*' << M << '^' << N.size()-1;
    for(int count = 1; count < N.size(); count++){
        if(N[count] == '0')
            continue;
        cout << '+' << N[count] << '*' << M << '^' << N.size()-count-1;
    }
    return 0;
}

你可能感兴趣的:(洛谷,C++学习)