7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!
一:题目
设计函数分别求两个一元多项式的乘积与和。
输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
输出样例:
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
二:补充测试用例
测试点2:
2 1 2 1 0
2 1 2 -1 0
测试用力3:
2 -1000 1000 1000 0
2 1000 1000 -1000 0
测试用例4:
0
0 1 2 3
三:思路
思路:用map<int,int>进行 存储数据;在处理乘积的时候 一个系数 对应一个指数,
若指数相同 对系数进行累加
处理多项式和的运算同理
四:上码
/**思路:用map<int,int>进行 存储数据;在处理乘积的时候 一个系数 对应一个指数,若指数相同 对系数进行累加 */
#include<bits/stdc++.h>
using namespace std;int main(){int N,M;int arr1[1001],arr2[1001];
// map<int,int>m;std::map<int, int, std::greater<int> > m,m2; //map默认的递增 ,这样改成递减的
//在创造map时,增加参数 **std::greater<int>**,就变成增加map<int,int>::iterator t; cin >> N;for(int i = 0; i < 2 * N; i++){int nums;cin >> nums;arr1[i] = nums;}cin >> M;for(int i = 0; i < 2 * M; i++){int nums;cin >> nums;arr2[i] = nums; }// 4 3 4 -5 2 6 1 -2 0
// 3 5 20 -7 4 3 1//计算乘积 for(int i = 0; i < 2 * N - 1; i = i + 2){for(int j = 0; j < 2 * M - 1; j = j + 2){int temp1 = arr1[i + 1] + arr2[j + 1]; //指数相加 int temp2 = arr1[i] * arr2[j];//系数相乘 m[temp1] += temp2;//一个指数 对应系数(如果有指数相同的则累加) }}int flag = 0; if(N == 0 || M == 0){cout << "0 0";}else{for(t = m.begin(); t != m.end(); t++){if(flag == 0 && t->second != 0)//这里的t->second != 0 说的是系数不为0,一旦为0,就什么也不输出 cout << t->second << ' ' << t->first;else if(t->second != 0){cout << ' ' << t->second << ' ' << t->first; } flag = 1;} }cout << endl;//计算多项式的和for(int i = 0; i < 2 * N - 1; i = i + 2){m2[arr1[i+1]] = arr1[i]; } for(int i = 0; i < 2 * M - 1; i = i + 2){m2[arr2[i+1]] += arr2[i];//如果遇见指数相同的系数相加 }int flag1 = 0; int count = 0;if(M == 0 && N == 0){cout << "0 0";}else{for(t = m2.begin(); t != m2.end(); t++){if(flag1 == 0 && t->second != 0)cout << t->second << ' ' << t->first;else if(t->second != 0){cout << ' ' << t->second << ' ' << t->first; } flag1 = 1;if(t->second == 0){count++;}} }if(count == m2.size()){//测试点三cout << "0 0";}} //测试用例子 2(测试点2)
//2 1 2 1 0
//2 1 2 -1 0//测试点3用例子
// 2 -1000 1000 1000 0
// 2 1000 1000 -1000 0//测试点4的例子
// 0
// 0 1 2 3
五:知识速递(如果对于map的用法不了解的兄弟们,可以学一下啊)
map的基本用法
最后加油Boy!!! 刷题源于热爱 , 顺便服务与以后的工作,学到老,刷到老!!!!!!!!!!
7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!相关推荐
- 7-2 一元多项式的乘法与加法运算 (20 分)
7-2 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝 ...
- 习题3.6 一元多项式的乘法与加法运算 (20 分)(有测试点具体数据)c语言链表版本
习题3.6 一元多项式的乘法与加法运算 (20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数 ...
- PTA 7-1 一元多项式的乘法与加法运算 (20 分)
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 7-2 一元多项式的乘法与加法运算 (20分) 设计函数分别求两个一元多项式的乘积与和。
输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方 ...
- 浙江大学 PTA习题3.6 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 7-2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- 7-2一元多项式的乘法与加法运算
title: "7-2一元多项式的乘法与加法运算(20" date: 2018-06-14T01:09:46+08:00 tags: [""] categori ...
- PTA:编程题:7-1 一元多项式的乘法与加法运算 (20 分)
大一下半期数据结构 数据结构题目集 一元多项式的乘法与加法运算 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项 ...
- 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版
浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版 设计函数分别求两个一元多项式的乘积与和. 本文用链表做的 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数 ...
最新文章
- 微信开发者和其他服务器区别,求教微信公众号开发中两种认证技术的区别?
- 面试官问我什么是扩展自适应机制
- Leetcode 25.K个一组翻转链表
- mysql 修改表结构提示 MySQL said: Table is read only
- wxWidgets:wxDataViewTreeCtrl类用法
- 3/100. Merge Two Binary Trees
- 经典面试题(9):以下代码将输出什么?并解释你的答案。
- HDU 1196 ( Lowest Bit )
- 【经典】具有中国特色的脑筋急转弯
- vba中split用法
- 典型医疗场景数据安全风险态势感知方案
- 人脸关键点检测 代码 matlab,从传统方法到深度学习,人脸关键点检测方法综述...
- win10 外接usb摄像头_win10系统外接usb摄像头怎么打开
- php like 中文,punycode和中文转换 phpThe Twitter-clone/twitter-like sites collection
- linux识别riser卡,一种具有多接口的Riser卡的制作方法
- vscode关闭讨厌的单词拼写检查
- 阅读笔记-平凡的世界
- 数字正交下变频(多相滤波法)
- 虚拟机网络模式(NAT模式)
- UIPickerView 用法
热门文章
- onlyoffice采坑笔记
- Git 合并分支选项 --squash 合并提交历史
- java中的path类_详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
- mysql一张表最多多少索引_MySQL一个索引最多有多少个列?真实的测试例子
- Android Notification总结
- 【QGIS入门实战精品教程】4.5:QGIS打开Excel中的点坐标,并生成矢量文件
- 【ArcGIS风暴】ArcGIS获取线段上等间距的点
- Git之如何解决sourceTree已经pull全部下来但是本地没有更新的问题
- 【C语言简单说】八:分支结构之if...else if()...else...(3)
- python数据结构教程_利用Python演示数型数据结构的教程