16进制转10进制 HDU-1720
A+B Coming
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9461 Accepted Submission(s): 6173
Problem Description
Many classmates said to me that A+B is must needs.
If you can’t AC this problem, you would invite me for night meal. ^_^
If you can’t AC this problem, you would invite me for night meal. ^_^
Input
Input may contain multiple test cases. Each case contains A and B in one line.
A, B are hexadecimal number.
Input terminates by EOF.
A, B are hexadecimal number.
Input terminates by EOF.
Output
Output A+B in decimal number in one line.
Sample Input
1 9
A B
a b
Sample Output
10
21
21
题意:一个最简单的进制转换问题,只要将两个十六进制的数转化为十进制数相加就好,需注意的是大小写均表示十六进制数。
思路不用介绍太多,直接上代码说明问题。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int change(string s1) 4 { 5 int num=0,t; 6 for(int i=0;i<s1.size();i++) 7 { 8 if(s1[i]>='0'&&s1[i]<='9') 9 t=s1[i]-'0'; 10 else if(s1[i]>='A'&&s1[i]<='Z') 11 t=s1[i]-'A'+10; 12 else if(s1[i]>='a'&&s1[i]<='z') 13 t=s1[i]-'a'+10; 14 num=num*16+t; 15 } 16 return num; 17 } 18 int main() 19 { 20 int sum; 21 string a,b; 22 while(cin>>a>>b) 23 { 24 sum=change(a)+change(b); 25 cout<<sum<<endl; 26 } 27 return 0; 28 }
16进制转10进制,水题。