复制
收藏
提问
全网

给你两个一元多项式,输出这两个一元多项式的乘积。 本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。 附加代码如下: int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); // freopen("/config/workspace/answer/DataStructure/test.out","w",stdout); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 输入 输入包含两行,每行一个一元多项式。 每行开头一个小于10000的正整数n,表示该多项式非零项项数,后面有n组数字,每组数字包含两个数字,按顺序分别为该项的系数和指数。 输出 输出包含一行,按指数从大到小的顺序输出乘积的非0项的系数与指数,以空格分隔开。 如果最终结果为0,直接输出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 提示 代码框架如下,请完成相关函数的代码实现 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式乘积 List mul(const List& list1, const List& list2){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 来源/分类

纯真艺术流
1个月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题给你两个一元多项式,输出这两个一元多项式的乘积。 本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。 附加代码如下: int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); // freopen("/config/workspace/answer/DataStructure/test.out","w",stdout); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 输入 输入包含两行,每行一个一元多项式。 每行开头一个小于10000的正整数n,表示该多项式非零项项数,后面有n组数字,每组数字包含两个数字,按顺序分别为该项的系数和指数。 输出 输出包含一行,按指数从大到小的顺序输出乘积的非0项的系数与指数,以空格分隔开。 如果最终结果为0,直接输出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 提示 代码框架如下,请完成相关函数的代码实现 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式乘积 List mul(const List& list1, const List& list2){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 来源/分类

已完成理解给你两个一元多项式,输出这两个一元多项式的乘积。 本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。 附加代码如下: int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); // freopen("/config/workspace/answer/DataStructure/test.out","w",stdout); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 输入 输入包含两行,每行一个一元多项式。 每行开头一个小于10000的正整数n,表示该多项式非零项项数,后面有n组数字,每组数字包含两个数字,按顺序分别为该项的系数和指数。 输出 输出包含一行,按指数从大到小的顺序输出乘积的非0项的系数与指数,以空格分隔开。 如果最终结果为0,直接输出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 提示 代码框架如下,请完成相关函数的代码实现 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式乘积 List mul(const List& list1, const List& list2){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 来源/分类

展开阅读网页

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

struct Node {
    int r;  // 系数
    int e;  // 指数
};

// 线性表存储一元多项式
struct List {
    Node data[10000+5];
    int len;
};

// 输出多项式
void PrintList(const List& list) {
    for (int i = 0; i < list.len; i++) {
        cout << list.data[i].r << " " << list.data[i].e;
        if (i != list.len - 1) cout << " ";
    }
}

// 输入多项式
List InputList() {
    List list;
    int n, coef, exp;
    cin >> n;
    list.len = n;
    for (int i = 0; i < n; i++) {
        cin >> coef >> exp;
        list.data[i].r = coef;
        list.data[i].e = exp;
    }
    return list;
}

// 多项式乘积
List mul(const List& list1, const List& list2) {
    List result;
    result.len = list1.len * list2.len;
    int idx = 0;
    for (int i = 0; i < list1.len; i++) {
        for (int j = 0; j < list2.len; j++) {
            Node term;
            term.r = list1.data[i].r * list2.data[j].r;
            term.e = list1.data[i].e + list2.data[j].e;
            if (idx > 0 && term.e == result.data[idx-1].e) {
                result.data[idx-1].r += term.r;
                if (result.data[idx-1].r == 0) idx--;
            } else {
                result.data[idx++] = term;
            }
        }
    }
    result.len = idx;
    // 按指数从大到小排序
    for (int i = 0; i < result.len; i++) {
        for (int j = i + 1; j < result.len; j++) {
            if (result.data[i].e < result.data[j].e) {
                Node temp = result.data[i];
                result.data[i] = result.data[j];
                result.data[j] = temp;
            }
        }
    }
    return result;
}

int main() {
    List list1 = InputList();
    List list2 = InputList();
    List list = mul(list1, list2);
    PrintList(list);
    return 0;
}
更专业一些
转笔记
专业
给你两个一元多项式,输出这两个一元多项式的乘积。 本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。 附加代码如下: int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); // freopen("/config/workspace/answer/DataStructure/test.out","w",stdout); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 输入 输入包含两行,每行一个一元多项式。 每行开头一个小于10000的正整数n,表示该多项式非零项项数,后面有n组数字,每组数字包含两个数字,按顺序分别为该项的系数和指数。 输出 输出包含一行,按指数从大到小的顺序输出乘积的非0项的系数与指数,以空格分隔开。 如果最终结果为0,直接输出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 提示 代码框架如下,请完成相关函数的代码实现 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式乘积 List mul(const List& list1, const List& list2){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 来源/分类
不在提醒

更专业内容正在努力生成中
知识树
给你两个一元多项式,输出这两个一元多项式的乘积。 本题是附加代码模式,主函数main会自动附加在同学们提交的代码后面,请同学们在提交的时候注释掉附加代码。 附加代码如下: int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); // freopen("/config/workspace/answer/DataStructure/test.out","w",stdout); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 输入 输入包含两行,每行一个一元多项式。 每行开头一个小于10000的正整数n,表示该多项式非零项项数,后面有n组数字,每组数字包含两个数字,按顺序分别为该项的系数和指数。 输出 输出包含一行,按指数从大到小的顺序输出乘积的非0项的系数与指数,以空格分隔开。 如果最终结果为0,直接输出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 提示 代码框架如下,请完成相关函数的代码实现 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Node{ int r; // 系数 int e; // 指数 }; // 线性表存储一元多项式 struct List{ Node data[10000+5]; int len; }; // 输出多项式 void PrintList(const List& list){ } // 输入多项式 List InputList(){ } // 多项式乘积 List mul(const List& list1, const List& list2){ } int main(){ // freopen("/config/workspace/answer/DataStructure/test.in","r",stdin); List list1 = InputList(); List list2 = InputList(); List list = mul(list1, list2); PrintList(list); return 0; } 来源/分类
多项式乘法的算法复杂度是多少?
如何优化多项式乘法的算法?
多项式加法和乘法的算法有何异同?
在线客服