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.缺陷

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

  • 相关阅读:
    BZOJ 1101 莫比乌斯函数+分块
    BZOJ 2045 容斥原理
    BZOJ 4636 (动态开节点)线段树
    BZOJ 2005 容斥原理
    BZOJ 2190 欧拉函数
    BZOJ 2818 欧拉函数
    BZOJ 3123 主席树 启发式合并
    812. Largest Triangle Area
    805. Split Array With Same Average
    794. Valid Tic-Tac-Toe State
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12789034.html
Copyright © 2011-2022 走看看