题解 P2084 【进制转换】
进制转换的格式一定要看懂:
n[i]转换为十进制的格式:n进制中的数*进制^进制所在的位置-1(从右往左数)。
例如题中二进制10101,n[1]为1,进制为2,进制所在位置为5,那么格式为1*2^4。
这个问题解决就意味着完成了80%,接下来就是输出的问题了。
我们可以先考虑输出不输出加号:
1.第一次转换输出不需要加号;
2是如果这项系数为0,那么也不需要输出加号,这个必须要判断,否则会出现两个加号连在一起的情况
那么接下来就可以放心大胆的输出单项式了。
#include<stdio.h>
#include<string.h>
int main()
{
int i,jz,j;
char n[1005];
scanf("%d%s",&jz,n);//读入进制和进制下的数(注意,字符串不需要取地址符)
for(i=0,j=strlen(n)-1;i<strlen(n);i++,j--)//i是为了指向每一位数,j是为了输出所在位置
{
if(i!=0&&n[i]!='0') printf("+");//判断是否第一项,是输出加号。当然如果系数为0也不需要输出
if(n[i]!='0') printf("%c*%d^%d",n[i],jz,j);//判断系数是否为0,不是输出
}
return 0;
}