洛谷网校 题解 之【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

说明

对于100%的数据,1

 

题解:这个题思路很简单,就是整型变量存m,字符数组(字符串)存n,然后进行格式化输出即可,但是需要注意的是,这个题很容易会卡在80分,这是因为有一种情况:2 10000,输出时会多一个 + 号 (我就在这里WA了~)

AC代码:


#include
#include
int main()
{
    int i,jz,j;                                                 //jz代表 :进制
    char n[1005];                                       //用字符数组存当前进制的数
    scanf("%d%s",&jz,n);                         //输入一个进制和对应的数,注意字符串输入的时候不需要加取地址符号
    for(i=0,j=strlen(n)-1;j>=0;i++,j--)      
    {
        if(i!=0&&n[i]!='0')
            printf("+");                                    //从右向左判断,当前字符不是0的时候输出+,而且i为0时不需要输入+号
        if(n[i]!='0')                                        //从右向左判断,当出现非零字符时,格式化输出即可
            printf("%c*%d^%d",n[i],jz,j);
    }
}

你可能感兴趣的:(洛谷)