您的位置:首页 > 其它

PAT甲 1002. A+B for Polynomials (25)

2016-09-09 22:50 621 查看

1002. A+B for Polynomials (25)

时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueThis time, you are supposed to find A+B where A and B are two polynomials.InputEach 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, whereK 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.OutputFor 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
#inc<span style="font-family: "Droid Sans Mono", Consolas, "Courier New", monospace; font-size: 1em; line-height: 1.5;">lu</span><span style="font-family: "Droid Sans Mono", Consolas, "Courier New", monospace; font-size: 1em; line-height: 1.5;">de<iostream></span>
#include<cstring>using namespace std;int main(){int i, k1, k2, j,max,count;double a[5][1005], b[1005];while (cin >> k1){max = 0;memset(a, 0, sizeof(a));for (i = 0; i < k1; i++){cin >> j;cin >> a[0][j];if (max < j)max = j;}cin >> k2;for (i = 0; i < k2; i++){cin >> j;cin >> a[1][j];if (max < j)max = j;}memset(b, 0, sizeof(b));for (j = 0; j <= 1; j++){for (i = 0; i <=max; i++){b[i] += a[j][i];}}count = 0;for (i = 0; i <= max; i++){if (b[i] != 0){count++;}}cout << count;for (i = max; i >=0; i--){if (b[i] != 0){printf(" %d %.1f", i, b[i]);}}cout << endl;}return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: