码迷,mamicode.com
首页 > 其他好文 > 详细

7-2 一元多项式的乘法与加法运算

时间:2019-04-23 17:20:34      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:code   int   下标   lse   false   else   max   define   nbsp   

https://pintia.cn/problem-sets/15/problems/710

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

输入格式:

输入分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

提交代码
#include <stdio.h>

#define MAXN 10000001

int in1[1001] = {0};        //第一行输入系数(下标为指数)
int in2[1001] = {0};        //第二行输入系数(下标为指数)
int ans1[2001] = {0};        //乘积多项式系数(下标为指数)
int ans2[1001] = {0};        //和多项式系数(下标为指数)

void disAns(int arr[], int maxLen)
{
    bool isFirst = true;
    for(int i=maxLen; i>=0; i--)
    {
        if(arr[i]!=0)
        {
            if(isFirst)
            {
                isFirst = false;
                printf("%d %d",arr[i],i);
            }
            else
            {
                printf(" %d %d",arr[i],i);
            }
        }
    }
    if(isFirst)//零多项式
    {
        printf("0 0");
    }
    printf("\n");
}

int main()
{
    int n,a,b;
    int in1max = -2147483648, in2max = -2147483648;
     
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&a,&b);//系数 指数 
        in1max = b > in1max ? b : in1max;
        in1[b] = a;
        ans2[b] += a;
    }
    
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&a,&b);//系数 指数 
        in2max = b > in2max ? b : in2max;
        in2[b] = a;
        ans2[b] += a;
    }
    
    //-----------------------------------------
    
    for(int i=0;i<=in1max;i++)
    {
        if(in1[i]==0)
            continue;
        for(int j=0;j<=in2max;j++)
        {
            if(in2[j]==0)
                continue;
            int index = i+j;
            int num = in1[i] * in2[j];
            ans1[index] += num;
        }
    }
    disAns(ans1, in1max+in2max);
    disAns(ans2, in1max>in2max?in1max:in2max);

    
    return 0;
} 

 



7-2 一元多项式的乘法与加法运算

标签:code   int   下标   lse   false   else   max   define   nbsp   

原文地址:https://www.cnblogs.com/cbattle/p/10757294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!