当前位置: 代码迷 >> 综合 >> PAT甲级-1002 A+B for Polynomials (25分)
  详细解决方案

PAT甲级-1002 A+B for Polynomials (25分)

热度:59   发布时间:2023-09-27 00:10:04.0

点击链接PAT甲级-AC全解汇总

题目:
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))
??
?? (i=1,2,?,K) are the exponents and coefficients, respectively. It is given that 1≤K≤10,0≤N?K?? <?<N?2?? <N?1?? ≤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

题意:
输入的是两个多项式
第一位是有几项,意味着后面有几对(指数,系数)
比如2 1 2.4 0 3.2的意思是这个多项式有2项,其中指数为1的系数是2.4,指数为0的系数是3.2
输出两个多项式的和,方式要和输入一样

我的代码:

#include<bits/stdc++.h>
using namespace std;int main()
{
    double exp[1010]={
    0};int K,cnt=0;cin>>K;for(int i=0;i<K;i++){
    int index;double num;cin>>index>>num;
// if(exp[index]==0)cnt++;exp[index]+=num;}cin>>K;for(int i=0;i<K;i++){
    int index;double num;cin>>index>>num;
// if(exp[index]==0)cnt++;exp[index]+=num;}for(int i=1000;i>=0;i--){
    if(exp[i]!=0)cnt++;}cout<<cnt;for(int i=1000;i>=0;i--){
    if(exp[i]!=0)printf(" %d %.1f",i,exp[i]);}return 0;
}

注意: 可能有系数为0的时候,所以cnt要单独计算,不然一堆错误