zoukankan      html  css  js  c++  java
  • 多项式求和

    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:

    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
    
     
     
    #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?'
    ':' ');
            }
        }
        else{
            printf("0
    ");
        }
            return 0;
        
    }
    
        
  • 相关阅读:
    FileUpload1上传控件
    docker如何push镜像到docker hub个人的仓库
    docker的ubuntu镜像无ifconfig和ping命令
    keystone同步数据库的时候提示error
    openstack安装dashboard后访问horizon出错 500 or 504
    装了ubuntu之后,只能进入ubuntu系统,不能进入windows系统
    Kernal Panic
    无法获得锁 /var/lib/dpkg/lock -open
    用户 'NT AUTHORITYIUSR' 登录失败
    配置错误:不能在此路径中使用此配置节。
  • 原文地址:https://www.cnblogs.com/tingtin/p/11545339.html
Copyright © 2011-2022 走看看