ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[PAT] A1002 A+B for Polynomials (23分!)

2021-07-21 19:34:24  阅读:269  来源: 互联网

标签:PAT int coeff Polynomials k3 A1002 sume expon 1010


A1002 A+B for Polynomials


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 N1 aN1 N2 aN2Nk 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 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

Code

模拟多项式加法。测试点5一直格式错误,没找到错误点…
需要注意的是:1、输出末尾不能含空格;2、精确到小数点后1位;3、系数为0的项是不输出的。

关于精确到小数点后一位,用的是: cout.setf(ios::fixed);+ cout<<setprecision(1)<<sumc[i];。可以参考setprecision、fixed、showpoint的用法总结

代码一如既往地写的罗里吧嗦。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    long long int expa[1010]={0},expb[1010]={0},sume[1010]={0};
    double coea[1010]={0.0},coeb[1010]={0.0},sumc[1010]={0.0};
    long long int k1,k2,k3=0,k4=1000,expon,cnt=0;
    double coeff;
    cin>>k1;
    for(int i=0;i<k1;i++)
    {
        cin>>expon>>coeff;
        expa[expon]++;
        coea[expon]=coeff;
        if(expon>k3)
            k3=expon;
        if(expon<k4)
            k4=expon;
    }
    cin>>k2;
    for(int i=0;i<k2;i++)
    {
        cin>>expon>>coeff;
        if(expon<0)
        {
            expon = expon;
            coeff = coeff;
        }
        expb[expon]++;
        coeb[expon]=coeff;
        if(expon>k3)
            k3=expon;
        if(expon<k4)
            k4=expon;
    }
    for(int i=0;i<k3+1;i++)
    {
        if(expa[i])
            sume[i]++;
        if(expb[i])
            sume[i]++;
        if(sume[i])
            sumc[i]=coeb[i]+coea[i];
    }
    for(int i=k3;i>=0;i--)
        if(sume[i] && sumc[i])
            cnt++;
    if(cnt)
        cout<<cnt<<" ";
    else
        cout<<cnt;
    for(int i=k3;i>=0;i--)
    {
        cout.setf(ios::fixed);
        if(sume[i] && sumc[i])
        {
            cout<<i<<" "<<setprecision(1)<<sumc[i];
            if(i != k4)
                cout<<" ";
        }
    }
}

标签:PAT,int,coeff,Polynomials,k3,A1002,sume,expon,1010
来源: https://blog.csdn.net/Jdicaprio/article/details/118973838

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有