数据结构 表 poly

这是一个关于数据结构与算法的实验题目,涉及实系数一元多项式的处理。题目要求读取多项式,进行操作并按照特定格式输出。关键在于利用map的排序特性处理多项式项,并确保输出格式符合要求。解决方案可能涉及到C++的setprecision来控制浮点数精度。

数据结构与算法实验题 2.2 简单实系数一元多项式问题

第一行有一个正整数 k,表示有 k 个一元实系数多项式。接下来有 k(k<=20)个数据块,每个数据块的第 1行是 1 个正整数
s,表示该数据块共有 s行。接下来的 s 行中,每行由实数 a和整数 b组成,表示多项式中的项 a x b 。紧接着 k
个数据块的是长度为 k-1 的字符串,每个字符是“+”,“-”,“*”这 3 个字符之一。

★数据输出:

文件的第一行是计算得到的多项式 g(x),输出多项式时, x k 用 x^k 表示。例如, 5 x k 应表示为
5x^5。注意输出的结果应该符合数学中手写习惯。例如,x不应输出为 1x^1,实系数 保留 6位有效数字。(数据保证多项式项数不大于
500)

★补充说明

整数 b 满足 b 为非负整数

输出的多项式结果,按项的幂次从高到低排序,参见样例

★Hint

c++中可以使用 setprecision 操作符来控制显示浮点数值的有效数的数量

分析:
主要是处理细节,利用好map原本自带排序的性质。
这道题就是繁琐并不难。
算法不需要优化,有兴趣的可以看看多项式乘法 – 傅里叶变化

代码:

#include<bits/stdc++.h>
#define LL long long
#define ms(s) memset(s, 0, sizeof(s))
#define REP(i, a, b) for(int i = (a); i < (b); i++)
#define INF 0X7fffffff
using namespace std;
const int maxn = 20 + 5;


struct Node {
   
   
    // 系数 指数
    double coe;
    int exp;
    Node(double coe, int exp):coe(coe), exp(exp) {
   
   }
    Node() {
   
   }
};
vector<Node> data[maxn];
string symbol;
map<int, double> map1, map2, map3; //指数 -> 系数 

void add() {
   
   
    for(map<int, double>::iterator it = map2.begin();
    it != map2.end(); it++) {
   
   
        double coe = it->second;
        int exp = it->first;
        if(map1.count(exp)) {
   
   
            map1[exp] += it->second;
        } else {
   
   
            map1[exp] = it->second;
        }
    }
}

void div
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值