1058. A+B in Hogwarts (20)
If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- as Hagrid explained it to Harry, "Seventeen silver Sickles to a Galleon and twenty-nine Knuts to a Sickle, it's easy enough." Your job is to write a program to compute A+B where A and B are given in the standard form of "Galleon.Sickle.Knut" (Galleon is an integer in [0, 107], Sickle is an integer in [0, 17), and Knut is an integer in [0, 29)).
Input Specification:
Each input file contains one test case which occupies a line with A and B in the standard form, separated by one space.
Output Specification:
For each test case you should output the sum of A and B in one line, with the same format as the input.
Sample Input:3.2.1 10.16.27Sample Output:
14.1.28
/* @ AUTHOR :GAOMINQUAN @ DATA :2014 - 2- 25 @ MAIL :ENSOLEILLY@GMAIL.COM @ HARD :EASY ** @ NOTE :NITICE THE USE OF ISDIGIT(), WHICH COULD MAKE PRO WORK EASIER */ #include<iostream> #include<vector> #include<string> #include<cmath> using namespace std; vector<int> add_2_vec(vector<int> num1,vector<int> num2){ int tenExp = (int)10e7; int biggest[] = {tenExp,17,29}; vector<int> ans(3,0); int addBits = 0; for(int i = num1.size()-1; i>=0; i--){ //cout<<num1[i]<<" "<<num2[i]<<endl; int bitSum = num1[i] + num2[i] + addBits; //cout<<"BS = "<<bitSum<<endl; addBits = bitSum/biggest[i]; bitSum %= biggest[i]; ans[i] = bitSum; } return ans; } vector<int> input_to_num_vec(string input){ char node = '.'; int findNum = 0; int begin = 0; vector<int> numbers(3,0); int numI = 0; int numNum = 2; for(int i = input.size()-1; i>=0; i--){ if(isdigit(input[i])){ //cout<<input[i]<<" is a digit "<<endl; findNum += (input[i] - '0') * pow(10,numI); numI++; }else{ numI = 0; numbers[numNum--] = findNum; findNum = 0; } } numbers[0] = findNum; return numbers; } void add(string input1, string input2){ vector<int> num1 = input_to_num_vec(input1); vector<int> num2 = input_to_num_vec(input2); vector<int> add = add_2_vec(num1,num2); for(int i = 0; i <add.size(); i++){ cout<<add[i]; if(i!=add.size()-1){ cout<<"."; } }cout<<endl; } int main(){ string input1,input2; cin>>input1>>input2; add(input1,input2); return 0; }