This time, you are supposed to find A+B where A and B are two polynomials.
Input
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 (i=1, 2, ..., K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.
Output
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 Input2 1 2.4 0 3.2 2 2 1.5 1 0.5Sample Output
3 2 1.5 1 2.9 0 3.2
#include <cstdio> #include <cstdlib> #include <iostream> #include <string> #include <vector> #include <map> using namespace std ; #define N 1001 double rs[N] ; int main() { //freopen("in.txt","r",stdin); int n ; int i , xi ; double zhi ; scanf("%d",&n); for(i = 0 ; i < n ; i ++) { scanf("%d%lf",&xi , &zhi) ; rs[xi] += zhi ; } scanf("%d",&n); for(i = 0 ; i < n ; i ++) { scanf("%d%lf",&xi , &zhi) ; rs[xi] += zhi ; } int len = 0 ; vector<int> v ; for(i = 1000 ; i >= 0 ; i--) { if(rs[i] != 0 ){ v.push_back(i) ; len ++ ; } } printf("%d",len) ; for(i = 0 ; i< len ; i++) { printf(" %d %.1lf" , v[i] , rs[v[i]]); } printf("\n"); return 0 ; }
#include <cstdio> #include <cstdlib> #include <iostream> #include <string> #include <vector> #include <map> #include <iterator> using namespace std ; #define N 1001 map<int , double> mp ; struct data{ int xi ; double zhi ; }; int main() { // freopen("in.txt","r",stdin); int n ; int i , xi ; double zhi ; scanf("%d",&n); for(i = 0 ; i < n ; i ++) { scanf("%d%lf",&xi , &zhi) ; mp[xi] += zhi ; } scanf("%d",&n); for(i = 0 ; i < n ; i ++) { scanf("%d%lf",&xi , &zhi) ; mp[xi] += zhi ; } int len = 0 ; data dt ; vector<data> v ; map<int ,double>::iterator it ; for(it = mp.begin() ; it != mp.end() ; ++it) { dt.xi = it->first; dt.zhi = it->second ; if(dt.zhi != 0) { v.push_back(dt) ; len ++ ; } } printf("%d",len) ; for(i = len-1 ; i >= 0 ; i--) { printf(" %d %.1lf" , v[i].xi , v[i].zhi); } printf("\n"); return 0 ; }