decimal system |
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 3394 Accepted Submission(s): 1309 |
Problem Description
As we know , we always use the decimal system in our common life, even using the computer. If we want to calculate the value that 3 plus 9, we just import 3 and 9.after calculation of computer, we will get the result of 12.
But after learning <<The Principle Of Computer>>,we know that the computer will do the calculation as the following steps: 1 computer change the 3 into binary formality like 11; 2 computer change the 9 into binary formality like 1001; 3 computer plus the two number and get the result 1100; 4 computer change the result into decimal formality like 12; 5 computer export the result; In the computer system there are other formalities to deal with the number such as hexadecimal. Now I will give several number with a kind of change method, for example, if I give you 1011(2), it means 1011 is a number in the binary system, and 123(10) means 123 if a number in the decimal system. Now I will give you some numbers with any kind of system, you guys should tell me the sum of the number in the decimal system. |
Input
There will be several cases. The first line of each case contains one integers N, and N means there will be N numbers to import, then there will be N numbers at the next N lines, each line contains a number with such form : X1….Xn.(Y), and 0<=Xi<Y, 1<Y<=10. I promise you that the sum will not exceed the 100000000, and there will be at most 100 cases and the 0<N<=1000.
|
Output
There is only one line output case for each input case, which is the sum of all the number. The sum must be expressed using the decimal system.
|
Sample Input
3
1(2)
2(3)
3(4)
4
11(10)
11(2)
11(3)
11(4)
|
Sample Output
6
23
|
题目大意
给出一系列数据,如a(b),表示b进制a,要求出这一系列数据的十进制的和。
解题思路
考的就是一个进制转换,将b进制转换为10进制。如110101(2)转换为10进制为
sum=1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0
知识拓展
将10进制转换为b进制,是不断取余,然后倒着将余数输出。
代码
<span style="font-size:18px;">#include<stdio.h> #include<math.h> int zhuan(int a,int b) { int i; double sum; sum=0; for(i=0;;i++) { if(a==0) break; sum+=a%10*pow(b,i); a/=10; } return sum; } int main() { int n; int a,b,sum; int i; while(scanf("%d",&n)==1) { sum=0; for(i=0;i<n;i++) { scanf("%d%*c%d%*c",&a,&b); sum+=zhuan(a,b); } printf("%d\n",sum); } return 0; }</span>