zoukankan      html  css  js  c++  java
  • 7-2一元多项式的乘法与加法运算


    title: "7-2一元多项式的乘法与加法运算(20"
    date: 2018-06-14T01:09:46+08:00
    tags: [""]
    categories: ["PTA"]


    7-2 一元多项式的乘法与加法运算(20 分)
    设计函数分别求两个一元多项式的乘积与和。

    输入格式:
    输入分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 <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
    
        vector<pair<int, int>> a, b;
        int an, bn, i;
        cin >> an;
        pair<int, int> t;
    
        for(i = 0; i < an; i++) {
            cin >> t.second;//系数
            cin >> t.first;//指数
            a.emplace_back(t);
        }
    
        cin >> bn;
    
        for(i = 0; i < bn; i++) {
            cin >> t.second;
            cin >> t.first;
            b.emplace_back(t);
        }
    
        //计算乘法
        map<int, int> m2;
    
        for(auto va : a) {
            for(auto vb : b) {
                m2[va.first + vb.first] += (va.second * vb.second);
            }
        }
    
        bool b2 = false;
    
        for(auto m = m2.rbegin(); m != m2.rend()--; m++) {
            if((*m).second != 0) {
                if(b2 == false) {
                    cout << (*m).second << ' ' << (*m).first;
                    b2 = true;
                } else {
                    cout << ' ' << (*m).second << ' ' << (*m).first;
                }
            }
        }
    
    
        if(!b2) {
            cout << "0 0";
        }
    
        cout << endl;
    
        //计算加法
        map<int, int> m1; //默认为0
    
        for(auto v : a) {
            m1[v.first] += v.second;
        }
    
        for(auto v : b) {
            m1[v.first] += v.second;
        }
    
    
        bool b1 = false;
    
        for(auto m = m1.rbegin(); m != m1.rend(); m++) {
            if((*m).second != 0) {
                if(b1 == false) {
                    cout << (*m).second << ' ' << (*m).first;
                    b1 = true;
                } else {
                    cout << ' ' << (*m).second << ' ' << (*m).first;
                }
            }
        }
    
        if(!b1) {
            cout << "0 0";
        }
    
    
        return 0;
    }
    
  • 相关阅读:
    Python for Infomatics 第14章 数据库和SQL应用四(译)
    展望2017
    bing的简单英文字典工具
    自我安慰
    Python for Infomatics 第14章 数据库和SQL应用三(译)
    Python for Infomatics 第14章 数据库和SQL应用二(译)
    Python for Infomatics 第14章 数据库和SQL应用一(译)
    希望父亲早日恢复
    Python for Infomatics 第13章 网页服务四(译)
    Python for Infomatics 第13章 网页服务三(译)
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/9181064.html
Copyright © 2011-2022 走看看