题目描述 Description

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

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

输入描述 Input Description

共一行

n和m

输出描述 Output Description

共一个数

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

样例输入 Sample Input

1010 2

样例输出 Sample Output

10

数据范围及提示 Data Size & Hint

乘权累加法

WIKIOI难度等级:通过初赛

总耗时:177ms  内存占用:0kb  语言:C++  代码:1200B

不得不感叹,码如其人啊

又是一段无限臃肿的代码,大概是WIKIOI上这道题目最短代码的4倍

可以使用枚举,但是并没有用它

switch神马的超讨厌!

  1. #include <iostream> 
  2. #include <cstdio> 
  3. #include <cstring> 
  4. #include <cmath> 
  5.   
  6. using namespace std; 
  7.   
  8. int main(int argc,char *argv[]) 
  9.     int m,i,len=0,sum=0,j; 
  10.     char n[10]; 
  11.     int number[10]; 
  12.   
  13.     for(i=0;(n[i]=getchar())!=' ';i++) 
  14.     { 
  15.         len++; 
  16.     } 
  17.     cin>>m; 
  18.   
  19.     for(i=0;i<len;i++) 
  20.     { 
  21.         switch(n[i]) 
  22.         { 
  23.             case '0' : number[i]=0;break
  24.             case '1' : number[i]=1;break
  25.             case '2' : number[i]=2;break
  26.             case '3' : number[i]=3;break
  27.             case '4' : number[i]=4;break
  28.             case '5' : number[i]=5;break
  29.             case '6' : number[i]=6;break
  30.             case '7' : number[i]=7;break
  31.             case '8' : number[i]=8;break
  32.             case '9' : number[i]=9;break
  33.             case 'A' : number[i]=10;break
  34.             case 'B' : number[i]=11;break
  35.             case 'C' : number[i]=12;break
  36.             case 'D' : number[i]=13;break
  37.             case 'E' : number[i]=14;break
  38.             case 'F' : number[i]=15;break
  39.         } 
  40.     } 
  41.   
  42.     for(i=len-1;i>=0;i--) 
  43.     { 
  44.         sum+=number[i]*pow(m,len-1-i); 
  45.     } 
  46.   
  47.     cout<<sum; 
  48.   
  49.     return 0;