加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

多项式求和

发布时间:2020-12-14 00:36:10 所属栏目:Linux 来源:网络整理
导读:? 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? N ? 1 ??? a

?

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?N?1???a?N?1?????N?2???a?N?2?????...?N?K???a?N?K????

where?K?is the number of nonzero terms in the polynomial,?N?i???and?a?N?i?????(,) 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
?
?
#include <bits/stdc++.h>
using namespace std;
struct Node{
    double ce;
    int  ex;
}n1[100],n2[100],n3[100],n4[100];
bool cmp(Node a,Node b){
    return a.ex>b.ex;
} 
int  vis[100];
int main()
{
        int  k1,k2;
        scanf("%d",&k1);
        for(int  j =0;j<k1;j++){
            scanf("%d%lf",&n1[j].ex,&n1[j].ce);
        }
        scanf("%d",&k2);
        for(int  j =0;j<k2;j++){
            scanf("%d%lf",&n2[j].ex,&n2[j].ce);
        }
        int cnt = 0;
        int  flag  ;
        for(int j=0;j<k1;j++){
            int x=n1[j].ex;
            flag  = 0;
            for(int  k =0;k<k2;k++){
                if(x==n2[k].ex){
                    n3[cnt].ex=x;
                    n3[cnt++].ce=n1[j].ce+n2[k].ce;
                    vis[x]=1;
                    flag  =1;
                    break;
                }
            }
            if(!flag){
                    n3[cnt].ex=x;
                    n3[cnt++].ce=n1[j].ce;
            }    
        }
        for(int i =0;i<k2;i++){
            int x = n2[i].ex;
            if(!vis[x]){
                n3[cnt].ex=x;
                n3[cnt++].ce=n2[i].ce;
            }
        }
        sort(n3,n3+cnt,cmp);
        int cnt1=0;
        for(int i=0;i<cnt;i++){
            if(n3[i].ce!=0){
                n4[cnt1].ex=n3[i].ex;
                n4[cnt1++].ce=n3[i].ce;
        }
        }
        if(cnt1!=0){
        printf("%d ",cnt1);
        for(int i =0;i<cnt1;i++){
            printf("%d %.1f%c",n4[i].ex,n4[i].ce,i==cnt1-1?n: );
        }
    }
    else{
        printf("0n");
    }
        return 0;
    
}

    

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读