1475 m进制转十进制

题目描述 Description

将m进制数n转化成一个十进制数 m<=16

题目保证转换后的十进制数<=100

 

输入描述 Input Description

共一行

n和m

 

输出描述 Output Description

共一个数

表示m进制的n化成十进制的数

 

样例输入 Sample Input

1010 2

样例输出 Sample Output

10

 

数据范围及提示 Data Size & Hint

乘权累加法

本题比那道将十进制转换为m进制的题目还要简单,因为最后转化成的就是我们最常用的十进制数。

将m进制数的每一位分别运算相加即可。如1010转换为十进制为1*pow(2,4-0-1)+0*pow(2,4-1-1)+1*pow(2,4-2-1)+0*pow(2,4-3-1)=10。

附AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 
 8 int main(){
 9     int n,sum=0;
10     string m;
11     cin>>m>>n;
12     for(int i=0;i<m.size();i++){//化为十进制,每一位分别运算相加 
13         if(m[i]=='0')
14         sum+=0*pow(n,m.size()-i-1);
15         if(m[i]=='1')
16         sum+=1*pow(n,m.size()-i-1);
17         if(m[i]=='2')
18         sum+=2*pow(n,m.size()-i-1);
19         if(m[i]=='3')
20         sum+=3*pow(n,m.size()-i-1);
21         if(m[i]=='4')
22         sum+=4*pow(n,m.size()-i-1);
23         if(m[i]=='5')
24         sum+=5*pow(n,m.size()-i-1);
25         if(m[i]=='6')
26         sum+=6*pow(n,m.size()-i-1);
27         if(m[i]=='7')
28         sum+=7*pow(n,m.size()-i-1);
29         if(m[i]=='8')
30         sum+=8*pow(n,m.size()-i-1);
31         if(m[i]=='9')
32         sum+=9*pow(n,m.size()-i-1);
33         if(m[i]=='A')
34         sum+=10*pow(n,m.size()-i-1);
35         if(m[i]=='B')
36         sum+=11*pow(n,m.size()-i-1);
37         if(m[i]=='C')
38         sum+=12*pow(n,m.size()-i-1);
39         if(m[i]=='D')
40         sum+=13*pow(n,m.size()-i-1);
41         if(m[i]=='E')
42         sum+=14*pow(n,m.size()-i-1);
43         if(m[i]=='F')
44         sum+=15*pow(n,m.size()-i-1);
45     }
46     cout<<sum<<endl;
47     return 0;
48 }
49  

 

posted @ 2016-07-12 20:46  Kiven#5197  阅读(224)  评论(0编辑  收藏  举报