1 // 16_10jinzhi.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<iostream>
6 #include<string>
7 #include<math.h>
8 using namespace std;
9
10
11 int getNum(char c)
12 {
13 int temp = 0;
14 switch(c)
15 {
16 case 'A':
17 temp = 10;
18 break;
19 case 'B':
20 temp = 11;
21 break;
22 case 'C':
23 temp = 12;
24 break;
25 case 'D':
26 temp = 13;
27 break;
28 case 'E':
29 temp = 14;
30 break;
31 case 'F':
32 temp = 15;
33 break;
34 case '0':
35 temp = 0;
36 break;
37 case '1':
38 temp = 1;
39 break;
40 case '2':
41 temp = 2;
42 break;
43 case '3':
44 temp = 3;
45 break;
46 case '4':
47 temp = 4;
48 break;
49 case '5':
50 temp = 5;
51 break;
52 case '6':
53 temp = 6;
54 break;
55 case '7':
56 temp = 7;
57 break;
58 case '8':
59 temp = 8;
60 break;
61 case '9':
62 temp = 9;
63 break;
64 }
65 return temp;
66 }
67
68 int _tmain(int argc, _TCHAR* argv[])
69 {
70 string OX_num;
71 while(cin>>OX_num)
72 {
73 int len = OX_num.length();
74 if(len <= 2)
75 return -1;
76 int result = 0;
77 for(int i = 2; i < len;i++)
78 {
79 int temp = 0;
80 if((OX_num[i]>='A' && OX_num[i] <= 'F')|| (OX_num[i]>='0' && OX_num[i] <= '9') )
81 temp = getNum(OX_num[i]);
82 else
83 return -1;
84
85 result += temp*(pow(static_cast<double>(16),len - i - 1));
86 }
87 cout<<result<<endl;
88 }
89 return 0;
90 }