码迷,mamicode.com
首页 > 其他好文 > 详细

P2084 进制转换

时间:2018-05-02 21:14:55      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:结果   空格   说明   它的   i++   第一个   include   格式   using   

题目背景

题目描述

今天小明学会了进制转换,比如(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。

 

 

我没看到M<10,所以一不小心把任意进制转换的都写出来了(除了1)

代码如下:

#include<iostream>
#include<string>
using namespace std;
char *p = "*^+";
int ch(char n)
{
 if (n >= ‘0‘&&n <= ‘9‘)return n - ‘0‘;
 else return n - ‘A‘ + 10;
}
int main()
{
 int num;
 string nn;
 cin >> num >> nn;

 int len = nn.length();
 int p = len - 1;
 cout << ch(nn[0]) << "*" << num <<"^"<<p;
 p--;
 for (int i = 1; i < len; i++)
 {
  if (!ch(nn[i]) == 0)
  {
   cout << "+";
   cout << ch(nn[i]) << "*" << num << "^" << p;
  }
  p--;
 }
 cout << endl;
 return 0;
}

 

刚刚,开始是有错误的,比如输入 2  1000

则输出  1*2^3+     则不需要后面的加号的。

因为我写的是只要不是最后一个数和非0,就在后面加+

后来,改变了判断条件变成了     1.第一个数字一定为非0,2.判断非0前面一定有“+”号

 

我cpy了一下,大佬的代码,结果发现比我复杂。

P2084 进制转换

标签:结果   空格   说明   它的   i++   第一个   include   格式   using   

原文地址:https://www.cnblogs.com/damaoranran/p/8982015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!