• pat 1002 A+B for Polynomials (25 分)


    1002 A+B for Polynomials (25 分)

    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​​​​ (i=1,2,,K) are the exponents and coefficients, respectively. It is given that 1K10,0NK​​<<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
     1 #include <map>
     2 #include <set>
     3 #include <queue>
     4 #include <cmath>
     5 #include <stack>
     6 #include <vector>
     7 #include <string>
     8 #include <cstdio>
     9 #include <cstring>
    10 #include <climits>
    11 #include <iostream>
    12 #include <algorithm>
    13 #define wzf ((1 + sqrt(5.0)) / 2.0)
    14 #define INF 0x3f3f3f3f
    15 #define eps 0.0000001
    16 #define LL long long
    17 using namespace std;
    18 
    19 const int MAXN = 1e3 + 10;
    20 int cnt = 0, book[MAXN] = {0}, n, a;
    21 double A[MAXN] = {0.0}, B[MAXN] = {0.0}, C[MAXN] = {0.0}, b;
    22 
    23 int main()
    24 {
    25     freopen("Date1.txt", "r", stdin);
    26     scanf("%d", &n);
    27     while (n --)
    28     {
    29         scanf("%d%lf", &a, &b);
    30         A[a] = b;
    31     }
    32     scanf("%d", &n);
    33     while (n --)
    34     {
    35         scanf("%d%lf", &a, &b);
    36         B[a] += b;
    37     }
    38 
    39     for (int i = 1005; i >= 0; -- i)
    40     {
    41         if (A[i] != 0 || B[i] != 0)
    42             C[i] = A[i] + B[i];
    43         if (C[i] != 0)
    44             ++ cnt;
    45     }
    46     printf("%d", cnt);
    47     for (int i = 1005; i >= 0; -- i)
    48     {
    49         if (C[i] != 0)
    50             printf(" %d %.1f", i, C[i]);
    51     }
    52     printf("
    ");
    53     return 0;
    54 }
  • 相关阅读:
    python基础-------模块与包(一)
    python基础-------函数(三)
    python基础-------函数(二)
    python基础-------函数(一)
    python基础(三)----字符编码以及文件处理
    python基础(二)-------数据类型
    python基础(一)------Python基础语法与介绍
    linux进程、软件包的安装和删除,及安装python3.6(源代码方式)
    Linux磁盘分区、打包压缩、软硬链接练习
    linux关于目录或文件权限的练习
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9651660.html
Copyright © 2020-2023  润新知