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