zoukankan      html  css  js  c++  java
  • 数据结构与算法题目集(中文)7-2 一元多项式的乘法与加法运算 (20分)

    1.题目

    设计函数分别求两个一元多项式的乘积与和。

    输入格式:

    输入分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.题目分析

    题中所给的两个多项式分别是

    相乘与相加的结果分别是

    所以使用数组来存储详见代码

    3.代码

    #include<iostream>
    using namespace std;
    int a[10001] = { 0 };
    int b[10001] = { 0 };
    int c[10001] = { 0 };
    int d[10001] = { 0 };
    int main()
    {
    	int count = 0;
    	cin >> count;
    	int x, z;//x为系数,z为指数
    	while (count--)
    	{
    		cin >> x >> z;
    		a[z] += x;
    	}
    	cin >> count;
    	while (count--)
    	{
    		cin >> x >> z;
    		b[z] += x;
    	}
    
    	for (int i = 0; i < 10001; i++)
    	{
    		if (a[i])
    		{
    			for (int j = 0; j < 10001; j++)
    			{
    				if (b[j])
    				{
    					c[i + j] += a[i] * b[j];
    				}
    			}
    		
    		}
    	}
    	int cn = 0;
    	for (int i = 10000; i >=0; i--)
    	{
    		if (c[i])
    		{
    			if (cn == 0)
    			{
    				cout << c[i] << " " << i; cn++;
    			}
    			else
    				cout <<" "<< c[i] << " " << i;
    		}
    	}
    	if (cn == 0)cout << "0 0";
    
    	cout << endl;
    	for (int i = 0; i < 10001; i++)
    	{
    		if (a[i])
    		{
    			d[i] += a[i];
    		}
    	}
    
    	for (int i = 0; i < 10001; i++)
    	{
    		if (b[i])
    		{
    			d[i] += b[i];
    		}
    	}
    	int cn2 = 0;
    	for (int i = 10000; i >= 0; i--)
    	{
    		if (d[i])
    		{
    			if (cn2 == 0)
    			{
    				cout << d[i] << " " << i; cn2++;
    			}
    			else
    				cout <<" "<< d[i] << " " << i;
    		}
    	}
    	if (cn2 == 0)cout << "0 0" << endl;
    
    
    }

    4.缺陷

    题目中未说明指数一定为非负,然而提交之后通过,应该是未设数据

  • 相关阅读:
    笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
    VMware workstation安装
    Redis bigkey分析
    MySQL drop table 影响及过程
    MySQL 大表硬连接删除
    ES elasticsearch 各种查询
    ES elasticsearch 各种聚合
    ES elasticsearch 聚合统计
    ES elasticsearch 实现 count单字段,分组取前多少位,以地理位置中心进行统计
    MySQL行溢出、varchar最多能存多少字符
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12789034.html
Copyright © 2011-2022 走看看