L2-018 多项式A除以B (25 分)(数组模拟)

简介: L2-018 多项式A除以B (25 分)(数组模拟)

这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。


输入格式:

输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下:

N e[1] c[1] ... e[N] c[N]

其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c[i]是第i个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。


输出格式:

分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为0 0 0.0。但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项-1/27,但因其舍入后为0.0,故不输出。


输入样例:

1. 4 4 1 2 -3 1 -1 0 -1
2. 3 2 3 1 -2 0 1


输出样例:

1. 3 2 0.3 1 0.2 0 -1.0
2. 1 1 -3.1


07ca5d04d20a4d10947da4a3c068cf52.jpg


思路:根据题意模拟其实现过程

#include<iostream>
using namespace std;
const int N=20010;//注意空间开小了会有个点过不去
double a[N],b[N],c[N];
void rd(double f[],int idx)
{
    int res=0;
    for(int i=0;i<=idx;i++)
        if(abs(f[i])>=0.05) res++;//记录多项式的项数
    cout<<res;
    if(res==0) cout<<" 0 0.0";//零多项式
    for(int i=idx;i>=0;i--)
        if(abs(f[i])>=0.05)
            printf(" %d %.1lf",i,f[i]);//按指数递减输出
}
int main()
{
    int n,m,x,idx1=-1e9,idx2=-1e9;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        cin>>a[x];//把系数和指数关联在一起
        if(idx1<x) idx1=x;//找到被除数的最大指数
    }
    cin>>m;
    for(int i=0;i<m;i++)
    {
        cin>>x;
        cin>>b[x];
        if(idx2<x) idx2=x;
    }
    int idx3=idx1-idx2;//商的最大指数
    while(idx1-idx2>=0)
    {
        double p=a[idx1]/b[idx2];//商的系数
        c[idx1-idx2]=p;//商的指数
        for(int i=idx1,j=idx2;i>=0&&j>=0;i--,j--) a[i]-=p*b[j];//余数
        while(!a[idx1]) idx1--;//零次项直接跳过
    }
    rd(c,idx3);
    cout<<endl;
    rd(a,idx1);
    return 0;
}
目录
相关文章
|
算法
规律数求和
规律数求和
105 0
|
自然语言处理 算法 Python
利用函数求出一个数组最大三个数的乘积
利用函数求出一个数组最大三个数的乘积
126 0
每日一题---输出100个1~6的随机整数,并求出每个数出现的概率
每日一题---输出100个1~6的随机整数,并求出每个数出现的概率
每日一题---输出100个1~6的随机整数,并求出每个数出现的概率
|
索引 Python
随机生成四则运算题并判断正确率
随机生成四则运算题并判断正确率
171 0
随机生成四则运算题并判断正确率
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
使用格里高利公式求π的近似值,要求精确到最后一项的绝对值小于10–4
L1-048 矩阵A乘以B (15 分)
L1-048 矩阵A乘以B (15 分)
116 0
L1-048 矩阵A乘以B (15 分)
给你一组数,求出其中两两最大公约数中最大的值
给你一组数,求出其中两两最大公约数中最大的值
70 0
h0039. 平方数 (15 分)
h0039. 平方数 (15 分)
139 0
L1-006 连续因子 (20 分)
L1-006 连续因子 (20 分)
144 0
L1-036 A乘以B (5 分)
L1-036 A乘以B (5 分)
103 0

热门文章

最新文章