美文网首页
1002. A+B for Polynomials (25)

1002. A+B for Polynomials (25)

作者: _SANTU_ | 来源:发表于2017-03-13 02:22 被阅读0次
    1. A+B for Polynomials (25)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue
    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 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

    AC代码:

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    double poly[3][1010];
    int main(int argc, const char * argv[]) {
        int k, count = 0;
        int exp;
        double coe;
        for(int i = 0; i < 2; i++) {
            scanf("%d", &k);
            for(int j = 0; j < k; j++) {
                scanf("%d%lf", &exp, &coe);
                poly[i][exp] = coe;
            }
        }
        for(int i = 0; i < 1010; i++) {
            poly[2][i] = poly[0][i] + poly[1][i];
        }
        for(int i = 0; i < 1010; i++){
            if(poly[2][i] != 0) count++;
        }
        printf("%d", count);
        if(count) {
            for(int i = 1009; i >= 0; i--) {
                if(poly[2][i] != 0) printf(" %d %.1f", i, poly[2][i]);
            }
        }
        return 0;
    }
    
    

    另一种解法

    //
    //  main.cpp
    //  pat
    //
    //  Created by yaojies on 16/8/16.
    //  Copyright © 2016年 yaojies. All rights reserved.
    //  1002. A+B for Polynomials
    
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main(int argc, const char * argv[]) {
        // insert code here...
        float an[3][1001]={0};
        for(int i=0;i<2;i++){
            int k;
            cin >> k;
            for(;k>0;k--){
                int n;
                float ank;
                cin >> n >> ank;
                an[i][n]=ank;
            }
        }
        int newk = 0;
        for(int j = 1000;j>=0;j--){
            an[2][j]=an[0][j]+an[1][j];
            if(an[2][j]!=0) newk++;
        }
        cout << newk;
        for(int j = 1000;j>=0;j--){
            if(an[2][j]!=0){
                //控制输出小数位数
                cout << " " << j << " " << fixed << setprecision(1) << an[2][j];
            }
        }
        cout << endl;
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:1002. A+B for Polynomials (25)

          本文链接:https://www.haomeiwen.com/subject/xlxfnttx.html