【PAT甲级 - C++题解】1009 Product of Polynomials

简介: 【PAT甲级 - C++题解】1009 Product of Polynomials

1009 Product of Polynomials


This time, you are supposed to find A×B where A and B are two polynomials.


Input Specification:


2.png

Output Specification:


For each test case you should output the product 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 up to 1 decimal place.

Sample Input:

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

Sample Output:

3 3 3.6 2 6.0 1 1.6


题意


输入两行多项式,每行的第一个数表示该多项式非零项的个数,其中每一项由指数和系数构成。


要求我们将给定的两个多项式相乘,然后输出相乘后的多项式。注意,多项式相乘是要将两个多项式的每一项分别相乘。


输出格式核输入多项式的格式相似,先输出相乘后的多项式非零项的个数,然后输出每一项,但是这里是按照指数的最高项往最低项进行输出。

思路


  1. 分别输入两个多项式,用数组 ab 存储,数组中存储的是系数,指数用下标表示。
  2. 将两个多项式的每一项都相乘,存到数组 c 当中。
  3. 计算 c 中非零项的个数 k
  4. 输出结果,注意要从指数最大的非零项开始输出。


代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
double a[N], b[N], c[N * 2];
void input(double x[])
{
    int k, n;
    double v;
    cin >> k;
    while (k--)
    {
        cin >> n >> v;
        x[n] = v;
    }
}
int main()
{
    input(a);
    input(b);
    //计算两多项式相乘的结果
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            c[i + j] += a[i] * b[j];
    int k = 0;    //计算多项式中非零项的个数
    for (int i = 0; i < N * 2; i++)
        if (c[i])
            k++;
    cout << k;
    for (int i = N * 2 - 1; i >= 0; i--)  //从指数最大的开始输出
        if (c[i])
            printf(" %d %.1f", i, c[i]);
    return 0;
}



目录
相关文章
|
C++
【PAT甲级 - C++题解】1040 Longest Symmetric String
【PAT甲级 - C++题解】1040 Longest Symmetric String
66 0
|
算法 C++
【PAT甲级 - C++题解】1044 Shopping in Mars
【PAT甲级 - C++题解】1044 Shopping in Mars
82 0
|
C++
【PAT甲级 - C++题解】1117 Eddington Number
【PAT甲级 - C++题解】1117 Eddington Number
76 0
|
存储 C++ 容器
【PAT甲级 - C++题解】1057 Stack
【PAT甲级 - C++题解】1057 Stack
76 0
|
存储 C++
【PAT甲级 - C++题解】1055 The World‘s Richest
【PAT甲级 - C++题解】1055 The World‘s Richest
78 0
|
C++
【PAT甲级 - C++题解】1051 Pop Sequence
【PAT甲级 - C++题解】1051 Pop Sequence
79 0
|
6天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
31 4
|
8天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
27 4
|
30天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
30天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4