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

PTA 数据结构 一元多项式的乘法与加法运算 (仅供参考,请勿粘贴)

时间:2017-09-13 22:07:55      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:一个   can   struct   pre   iostream   乘法   多项式   main   amp   

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

输入格式:

输入分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 <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 2000+10;
struct Node
{
    int val,x;
};
Node a[maxn],b[maxn];
int ans[maxn];
// 整体思想就是用数组下标代表 指数,值代表项系数
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&a[i].val,&a[i].x);
    }
    int m;
    scanf("%d",&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&b[i].val,&b[i].x);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            ans[a[i].x+b[j].x]+=(a[i].val*b[j].val);
        }
    }
    int cnt=0;
    for(int i=2000;i>=0;i--)
    {
        if(ans[i]!=0)
        {
            if(cnt==0) {printf("%d %d",ans[i],i);cnt++;}
            else {printf(" %d %d",ans[i],i);cnt++;}
        }
    }
    if(cnt==0) printf("0 0");
    printf("\n");
    memset(ans,0,sizeof(ans));
    for(int i=1;i<=n;i++)
    {
        ans[a[i].x]+=a[i].val;
    }
    for(int j=1;j<=m;j++)
    {
        ans[b[j].x]+=b[j].val;
    }
    cnt=0;
    for(int i=2000;i>=0;i--)
    {
        if(ans[i]!=0)
        {
            if(cnt==0) {printf("%d %d",ans[i],i);cnt++;}
            else printf(" %d %d",ans[i],i);
        }
    }
    if(cnt==0) printf("0 0");
    printf("\n");
    return 0;
}

  

 

PTA 数据结构 一元多项式的乘法与加法运算 (仅供参考,请勿粘贴)

标签:一个   can   struct   pre   iostream   乘法   多项式   main   amp   

原文地址:http://www.cnblogs.com/masterchd/p/7517831.html

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