【PAT1009】Product of Polynomials

1.题目

在这里插入图片描述

2.代码

#include <iostream>
using namespace std;
int main(){
    int size1;
    double res[1003000] = {0};
    cin>>size1;
    double res1[size1][2];
    for(int i=0; i<size1;i++){
        cin>>res1[i][0]; //指数
        cin>>res1[i][1]; //系数
    }
    int size2;
    cin>>size2;
    for(int i=0; i<size2;i++){
        int index2;
        double res2;
        cin>>index2;
        cin>>res2;
        for(int j=0;j<size1;j++){
            //cout<<"res2:"<<res2<<endl;
            //cout<<"res1[j][1]:"<<res1[j][1]<<endl;
            res[int(res1[j][0]) + index2] += (res2*res1[j][1]);
        }
    }
    int count = 0;
    for(int i=0; i<1003000;i++){
        if(res[i] != 0){
            count++;
        }
    }
    cout<<count<<" ";
    int countres = 0;
    for(int i=1002999; i>=0;i--){
        if(res[i] != 0){
            countres++;
            if(countres == count){
                printf("%d %.1f\n", i, res[i]);
            }else{
                printf("%d %.1f ", i, res[i]);
            }
            
        }
    }
    
    return 0;
}

3.解题思路

题目要求计算两个多项式的乘积。本题的解决方法依然是开数组进行存储。
首先,通过第一个输入得到第一个多项式的大小,开一个二维数组,第一位用来存储指数,第二位用来存储系数。
在得到第一个二维数组后,我们在后面的计算中将其作为计算的基底。同时,我们开一个大小为1003000(10011001)的一维数组用来存储乘积的结果。
逐个读入第二个多项式的数据,我们每一次读入一个指数和一个系数。并将读入的数据与定义的二维数组里的所有值进行乘积运算,并累加到结果的一维数组中。循环结束我们就可以得到乘积的结果。
遍历结果数组得到多项式的不同指数个数,并在此通过循环逐个输出。
注意点:
1.最后结果输出时逆序输出。
2.注意二维数组的变量类型是double。
3.注意计算结果的公式res[index1+index2] += (res[index1] + res[index2])。
4.结果数组的大小为1001
1001 = 1003000。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值