zoukankan      html  css  js  c++  java
  • 洛谷P2084 进制转换

    题目背景

    题目描述

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

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

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

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

    输入输出格式

    输入格式:

    两个数,M和N,中间用空格隔开。

    输出格式:

    共一行,一个十进制表示的式子。

    说明

    对于100%的数据,1<M<10,N的位数不超过1000。

    ——————————————————————————华丽丽的分割线————————————————————————————————————————————————

    好吧,一道水题,看了看题解感觉有的还不如我做的简单,我的代码看着比较长,是头和码风的事...

    首先,题目给了n<=10,所以直接暴力模拟一波是可以的...

    n[i]转换为十进制的格式:n进制中的数*进制^进制所在的位置-1(从右往左数)(不太会描述,看了看题解有个和我想的差不多的就直接套上来了

    至于加号的问题,我看很多人都是从式子后面特判的,但是我觉得只需要判断1,其他的都不需要,毕竟除了第一个其他的只要是一个式子前面就一定会有加号

    代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<iomanip>
    using namespace std;
    char a[1001];
    int main()
    {
        int m,w;
        cin>>m;
        gets(a);//这里用字符串的话会更好一些
        w=strlen(a);
        for(int i=1;i<strlen(a);i++)
        {
            if(i==1)//判断是否为第一项,如果是的话前面就不用+
            {
                cout<<a[i]<<"*"<<m<<"^"<<w-2;
            }
            else if(a[i]!='0'&&w>0)//一定不要漏else,否则会重判出现两个第一项,我就是第一次没加else才WA(wonderful answer)的
            {
                cout<<"+"<<a[i]<<"*"<<m<<"^"<<w-2;
            }
            w--;
        }
    }
  • 相关阅读:
    【数论】X problem
    【数论】约瑟夫问题
    【组合数学】购票问题
    【组合数学】计数原理
    spring batch批处理框架学习
    eclipse自动添加javadoc注释
    eclipse手动安装alibaba代码规范插件
    现代支付系统的资金流向
    利用网易有道在谷歌浏览器进行网页滑词翻译
    spring配置遇到的问题
  • 原文地址:https://www.cnblogs.com/lcezych/p/10464556.html
Copyright © 2011-2022 走看看