Home Pat 1474 多项式a加b
Post
Cancel

Pat 1474 多项式a加b

题目

给定两个多项式 $A$ 和 $B$,计算 $A+B$ 的结果。

输入格式

共两行,每行包含一个多项式的信息,格式如下:

$K\ N_1\ a_{N_1}\ N_2\ a_{N_2}\ ……\ N_k\ a_{N_k}$

其中,$K$ 表示多项式中非零项的数量,$N_i$ 和$a_{N_i}$ 分别表示其中一个非零项的指数和系数。

输出格式

按照与输入相同的格式,输出 A+B 的结果。

结果中的各项的系数均保留一位小数

输入样例:

1
2
2 1 2.4 0 3.2
2 2 1.5 1 0.5

输出样例:

1
3 2 1.5 1 2.9 0 3.2


题解

  1. 解法1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
     #include <iostream>
     using namespace std;
        
     const int MAX = 1010;
     double a_a[MAX], b_a[MAX];
        
     int main() {
         int k;
         // 读取第一个多项式
         cin >> k;
         while (k--) {
             int n;
             double a;
             cin >> n >> a;
             a_a[n] = a;
         }
         // 读取第二个多项式
         cin >> k;
         while (k--) {
             int n;
             double a;
             cin >> n >> a;
             b_a[n] = a;
         }
     	// 相加,计算结果的项数
         int count = 0;
         for (int i = MAX; i >= 0; --i) {
             b_a[i] += a_a[i];
             if(b_a[i]) {
                 count++;
             }
         }
         // 输出结果
         printf("%d",count);
         for (int i = MAX; i >= 0; --i) {
             if (b_a[i]) {
                 printf(" %d %.1f", i, b_a[i]);
             }
         }
         return 0;
     }
        
    
This post is licensed under CC BY 4.0 by the author.
Contents