zoukankan      html  css  js  c++  java
  • 一元多项式的乘法与加法运算 【STL-map哈希-map反向迭代器遍历 + 零多项式】

    设计函数分别求两个一元多项式的乘积与和。

    输入格式:

    输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

    输出格式:

    输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

    输入样例:

    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
    


    数据测试补充:
    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

    2 1 2 1 0
    2 1 2 -1 0
    输出:
    1 4 -1 0
    2 2

    2 -1000 1000 1000 0
    2 1000 1000 -1000 0
    输出:
    -1000000 2000 2000000 1000 -1000000 0
    0 0

    0
    1 999 1000
    输出:
    0 0
    999 1000

    上面的丝足测试数据都过了的话,代码应该就能过了。
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <map>
    #include <algorithm>
    
    using namespace std;
    
    int n, m;
    struct node
    {
        int x, z;
    }a[200], b[200];
    
    int main()
    {
        int i, j;
        scanf("%d", &n);
        for(i=0; i<n; i++){
            scanf("%d %d", &a[i].x, &a[i].z );
        }
        scanf("%d", &m);
        for(i=0; i<m; i++){
            scanf("%d %d", &b[i].x, &b[i].z );
        }
        map<int,int>q;
        int cur;
        for(i=0; i<n; i++){
            for(j=0; j<m; j++){
                cur=a[i].z+b[j].z;
                q[cur]+=(a[i].x*b[j].x);
            }
        }
        int cnt=0;
        bool flag=false;
        map<int, int>::reverse_iterator it=q.rbegin();
        for(it; it!=q.rend(); it++){
            if(flag==false){
                if(it->second==0) continue;
                else{
                    flag=true;
                    printf("%d %d", it->second, it->first); cnt++;
                }
            }else{
                if(it->second==0) continue;
                else printf(" %d %d", it->second, it->first); cnt++;
            }
        }
        if(cnt==0){
            printf("0 0");
        }printf("
    ");
    
    
        map<int, int>h;
        for(i=0; i<n; i++){
            h[a[i].z]+=a[i].x;
        }
        for(j=0; j<m; j++){
            h[b[j].z]+=b[j].x;
        }
        flag=false;
        it=h.rbegin(); cnt=0;
        for(it; it!=h.rend(); it++){
            if(flag==false){
                if(it->second==0) continue;
                else{
                    flag=true;
                    printf("%d %d", it->second, it->first); cnt++;
                }
            }else{
                if(it->second==0) continue;
                else printf(" %d %d", it->second, it->first); cnt++;
            }
        }
        if(cnt==0){
            printf("0 0");//没有合法输出的情况下,就输出0 0;
        }printf("
    ");
    
        return 0;
    }
    
  • 相关阅读:
    用python分析1225万条淘宝数据,终于搞清楚了我的交易行为
    Python 中 3 个不可思议的返回
    2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题
    改改Python代码,运行速度还能提升6万倍
    Python的10个神奇的技巧
    Python 在线免费批量美颜,妈妈再也不用担心我 P 图两小时啦
    全程干货,requests模块与selenium框架详解
    Python-选择器Xpath,Css,Re
    Python-Django 模型层-多表查询-2
    Python-Django 模型层-多表查询
  • 原文地址:https://www.cnblogs.com/yspworld/p/4784848.html
Copyright © 2011-2022 走看看