PAT (Advanced Level) Practice 1009 Product of Polynomials

如果对你有帮助,要点个赞让我知道喔~

文章目录

  • 问题分析
  • 完整步骤描述
  • 伪代码描述
  • 完整提交代码

问题分析

  1. 题设要求计算两个多项式的积, 同题目1002一样, 多项式求积是有固定步骤的, 所以这是一道模拟题。
  2. 多项式求积的规则为: 将两个多项式中的项两两相乘, 相乘得到的结果项指数为两个项的和, 系数为两个项的乘积。
  3. 这意味着我们只需要用一个两重循环就可以覆盖所谓的"两两相乘", 将所有求得的结果项相加就是题设要求的多项式乘积。

完整步骤描述

  1. 根据指数的取值范围[0, 1000], 设置长度为2001的乘积结果数组并初始化各个值为0, 数组索引表示指数的值
  2. 设置长度为1001的数组并初始化各个值为0, 用来存储输入的多项式;
  3. 获取输入多项式A: 项数, 每项的指数和系数
    • 读取的指数作为索引, 数组对应索引位置的值加上系数的值
  4. 获取输入多项式B: 项数, 每项的指数和系数
    • 对于每一项:

      • 遍历存储的多项式A, 将当前项乘以多项式A的非零项, 结果存到结果数组中
  5. 统计结果数据中的非零项个数
  6. 输出非零项个数, 输出每一个非零项的指数和系数

伪代码描述

  1. init recorders:

    • result[2001] = {0};
    • ploy[1001] = {0}
  2. get input: item_amount (of Polynomial A)
  3. for (int i = 0; i < item_amount; i++):
    • get input: item_exponent, item_coefficient
    • ploy[item_exponent] = item_coefficient;
  4. get input: item_amount (of Polynomial B)
  5. for (int i = 0; i < item_amount; i++):
    • get input: item_exponent, item_coefficient
    • for (int j = 0; j < 1001; j++):
      • result[j+item_exponent] += ploy[j] * item_coefficient;
  6. init recorder:
    • nonzero_item_count = 0;
  7. for (int i = 0; i < 2001; i++):
    • if result[i] != 0.0:

      • nonzero_item_count++;
  8. print(nonzero_item_count);
    1. for (int i = 0; i < 2001; i++):
    • if result[i] != 0.0:

      • printf(result[i]);

完整提交代码

/*
# 问题分析
题设要求计算两个多项式的积, 同题目1002一样, 多项式求积是有固定步骤的, 所以这是一道模拟题。
多项式求积的规则为: 将两个多项式中的项两两相乘, 相乘得到的结果项指数为两个项的和, 系数为两个项的乘积。
这意味着我们只需要用一个两重循环就可以覆盖所谓的"两两相乘", 将所有求得的结果项相加就是题设要求的多项式乘积。# 完整步骤描述
1. 根据指数的取值范围[0, 1000], 设置长度为2001的乘积结果数组并初始化各个值为0, 数组索引表示指数的值
2. 设置长度为1001的数组并初始化各个值为0, 用来存储输入的多项式;
3. 获取输入多项式A: 项数, 每项的指数和系数- 读取的指数作为索引, 数组对应索引位置的值加上系数的值
4. 获取输入多项式B: 项数, 每项的指数和系数- 对于每一项:- 遍历存储的多项式A, 将当前项乘以多项式A的非零项, 结果存到结果数组中
5. 统计结果数据中的非零项个数
6. 输出非零项个数, 输出每一个非零项的指数和系数# 伪代码描述
1. init recorders:- result[2001] = {0};- ploy[1001] = {0}
2. get input: item_amount (of Polynomial A)
3. for (int i = 0; i < item_amount; i++):- get input: item_exponent, item_coefficient- ploy[item_exponent] = item_coefficient;
4. get input: item_amount (of Polynomial B)
5. for (int i = 0; i < item_amount; i++):- get input: item_exponent, item_coefficient- for (int j = 0; j < 1001; j++):- result[j+item_exponent] += ploy[j] * item_coefficient;
6. init recorder:- nonzero_item_count = 0;
7. for (int i = 0; i < 2001; i++):- if result[i] != 0.0:- nonzero_item_count++;
8. print(nonzero_item_count);
9. 7. for (int i = 0; i < 2001; i++):- if result[i] != 0.0:- printf(result[i]);
*/# include<iostream>
using namespace std;int main(){double result[2001] = {0};double ploy[1001] = {0};int item_amount;cin >> item_amount;int exponent;double coefficient;for (int i = 0; i < item_amount; i++){cin >> exponent >> coefficient;ploy[exponent] = coefficient;}cin >> item_amount;for (int i = 0; i < item_amount; i++){cin >> exponent >> coefficient;for (int j = 0; j < 1001; j++){if (ploy[j] != 0.0){result[j+exponent] += ploy[j] * coefficient;}}}int nonzero_item_count = 0;for (int i = 0; i < 2001; i++){if (result[i] != 0.0)nonzero_item_count++;}cout << nonzero_item_count;for (int i = 2000; i > -1; i--){if (result[i] != 0.0)printf(" %d %.1f", i, result[i]);}return 0;
}

「PAT甲级真题解析」Advanced Level 1009 Product of Polynomials相关推荐

  1. 「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1033 问题分析 题目设定了一个场景: 有 ...

  2. 「PAT乙级真题解析」Basic Level 1072 开学寄语 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1072 开学寄语 问题分析 题设要求查找学 ...

  3. 「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1053 问题分析 题设要求统计符合住房空置 ...

  4. 「PAT乙级真题解析」Basic Level 1104 天长地久 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1104 天长地久 问题分析 题设要求 ...

  5. 「PAT乙级真题解析」Basic Level 1004 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1004 需求分析 思路一: 以终为始分解需 ...

  6. 「PAT乙级真题解析」Basic Level 1100 校庆 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1100 校庆 问题分析 题设给定了一 ...

  7. 「PAT乙级真题解析」Basic Level 1089 狼人杀-简单版 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1089 狼人杀-简单版 问题分析 题 ...

  8. 「PAT乙级真题解析」Basic Level 1082 射击比赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1082 射击比赛 问题分析 题设给定 ...

  9. 「PAT乙级真题解析」Basic Level 1031 查验身份证 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1031 问题分析 我们看到题目详细地描述了 ...

最新文章

  1. JavaWeb系列之:Servlet
  2. 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
  3. jQuery - 获取并设置 CSS 类
  4. UA SIE545 优化理论基础0 优化建模7 二值变量的应用
  5. simple java mail
  6. 欢迎访问github地址,并指出项目中的缺陷和BUG
  7. 期末复习、化学反应工程科目(第八、九章)
  8. Linux学习之系统编程篇:互斥锁(pthread_mutex_init / lock / trylock / unlock / destroy)
  9. python歌词统计单词词频_Python爬虫网易云歌词及词频统计
  10. 农村这么好,为什么感觉大家都不想在农村生活呢?
  11. mac好用的图片转文字,ocr文字识别工具:Text Scanner
  12. 刚刚用鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  13. OpenCV-图像处理(05、图像混合)
  14. 汽车销售管理系统 c语言版 课程设计,《汽车销售管理系统 C语言版》.doc
  15. Java字符串中数据排序
  16. AD20输出PDF 打印 位号图 焊接图
  17. 时间序列预测--基于CNN的股价预测
  18. 拉链表取某一天的历史快照
  19. 用最少数量的剑引爆气球
  20. PHP+Mysql 实现最简单的注册登录

热门文章

  1. [读书]互联网让你变聪明还是变傻?
  2. Linux入门及企业服务器知识学习笔记
  3. Python图形界面设计
  4. 详解使用NetBeans IDE 8.2进行可视化图形界面设计——高仿QQ登录界面
  5. ZNS 架构实现 : 解决传统SSD问题的高性能存储栈设计
  6. PHP本地环境之phpStudy2016使用教程
  7. 领铠服务器没有角色信息,王者荣耀英雄印记赠送功能出bug没显示怎么办 铠的印记消失出bug什么情况...
  8. 我就是一名房地产经纪人!不是中介,谁能明白我们呢?
  9. 又一款全自动装卸车神器
  10. expires缓存技术