PAT甲级——A1002 A+B for Polynomials
This time, you are supposed to find A+B where A and B are two polynomials.
Input Specification:
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:
K N1 aN1 N2 aN2 ... NK aNK
where K is the number of nonzero terms in the polynomial, Ni and aNi (,) are the exponents and coefficients, respectively. It is given that 1,0.
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. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
Sample Input:
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output:
3 2 1.5 1 2.9 0 3.2
使用map进行映射即可,但需注意输出格式
1 #include <iostream> 2 //#include <vector> 3 #include <map> 4 #include <stack> 5 using namespace std; 6 7 int main() 8 { 9 map<double, double,greater<double>>data;//从大到小排序 10 for (int i = 0; i < 2; ++i)//输入两组数据 11 { 12 int k; 13 cin >> k; 14 for (int j = 0; j < k; ++j)//接受每组数据 15 { 16 double a, b; 17 cin >> a >> b; 18 data[a] += b; 19 if (data[a] == 0)//系数为0则删除 20 data.erase(a); 21 } 22 } 23 cout << data.size(); 24 for (auto ptr = data.begin(); ptr != data.end(); ++ptr) 25 { 26 cout << " " << ptr->first << " "; 27 printf("%.1f", ptr->second); 28 } 29 return 0; 30 }