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

02-线性结构2 一元多项式的乘法与加法运算 (20 分)

时间:2019-03-18 13:59:26      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:超过   pre   div   can   运算   绝对值   一个   个数   include   

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

输入格式:

输入分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<cstdio>
const int maxn = 2050;
int add[maxn] = {0};
int mul1[maxn] = {0},mul2[maxn];

int main(){
    int n;
    scanf("%d",&n);
    int exp,coe;      //exp指数,coe系数 
    for(int i = 0; i < n; i++){
        scanf("%d %d",&coe,&exp);
        add[exp] += coe;
        mul1[exp] += coe;
    }
    scanf("%d",&n);
    for(int i = 0; i < n; i++){
        scanf("%d %d",&coe,&exp);
        add[exp] += coe;
        for(int j = maxn; j >= 0; j--){
            if(mul1[j] != 0){
                mul2[j+exp] += mul1[j] * coe;
            }
        }
    }
    int cnt1 = 0,cnt2 = 0;
    for(int i = 0; i < maxn; i++){
        if(add[i] != 0) cnt1++;
        if(mul2[i] != 0) cnt2++;
    }
    if(cnt2 == 0) printf("0 0\n");
    else 
    for(int i = maxn; i >= 0; i--){
        if(mul2[i] != 0){
             printf("%d %d",mul2[i],i);
             cnt2--;
             if(cnt2 > 0) printf(" ");
             else printf("\n");
        }    
            
    }
    if(cnt1 == 0){
         printf("0 0");
         return 0;
    }
    for(int i = maxn; i >= 0; i--){
        if(add[i] != 0){
             printf("%d %d",add[i],i);
             cnt1--;
             if(cnt1 > 0) printf(" ");
             else printf("\n");
        }
    }
    return 0;
}

 

02-线性结构2 一元多项式的乘法与加法运算 (20 分)

标签:超过   pre   div   can   运算   绝对值   一个   个数   include   

原文地址:https://www.cnblogs.com/wanghao-boke/p/10551424.html

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