1475 m进制转十进制
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 白银 Silver
题解
查看运行结果
题目描述 Description
将m进制数n转化成一个十进制数 m<=16
题目保证转换后的十进制数<=100
输入描述 Input Description
共一行
n和m
输出描述 Output Description
共一个数
表示m进制的n化成十进制的数
样例输入 Sample Input
1010 2
样例输出 Sample Output
10
数据范围及提示 Data Size & Hint
乘权累加法
解答:
题目中已经给出了提示,使用成权累加法,只需要注意的就是对于ABCDEF怎么进行处理而已。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[100];
scanf("%s", a);
int count=0;
for(int i=0; a[i]!='\0'; i++)
{
count++;
}
int m;
cin>>m;
int sum = 0;
int now = 0;
int b=0;
for(int i=count-1; i>=0; i--)
{
if(a[i] =='A') b=10;
else if(a[i]=='B') b=11;
else if(a[i]=='C') b=12;
else if(a[i]=='D') b=13;
else if(a[i]=='E') b=14;
else if(a[i]=='F') b=15;
else b=a[i] -'0';
now = b * pow(m, count-i-1);
sum =sum + now;
}
cout<<sum;
return 0;
}