杭电ACM-1.2.6 Decimal System
decimal system |
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 2640 Accepted Submission(s): 1026 |
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.
|
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 |
代码:
#include<iostream> #include<iomanip> #include<string> #include<cstdlib> using namespace std; int cf(int n1,int n2) { int sum=1; while(n2--) sum*=n1; return sum; } int convert(int num1,int num2) { int sum=0,i=0; while(num1) { if((num1%10)<num2) { sum+=(num1%10)*cf(num2,i); i++; num1/=10; } } return sum; } int main() { int N,n,sum; string c,c1,c2; while(cin>>N&&N<=1000) { sum=0; do { getline(cin,c); c1=c.substr(0,c.find('(')); c2=c.substr(c.find('(')+1,c.find(')')-c.find('(')-1); int b1=atoi(c1.c_str()); int b2=atoi(c2.c_str()); sum+=convert(b1,b2); }while(N--); if(sum<=10000000) cout<<sum<<endl; } return 0; }