题目描述 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
时间: 2024-11-05 12:11:15