IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝! -> 正文阅读

[开发测试]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!!! 刷题源于热爱 , 顺便服务与以后的工作,学到老,刷到老!!!!!!!!!!

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:46:10  更:2021-08-21 15:47:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:38:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码