zoukankan      html  css  js  c++  java
  • PAT 甲级 1009 Product of Polynomials

    地址   https://pintia.cn/problem-sets/994805342720868352/problems/994805509540921344

    解答 

    代码模拟初中时候的多项式乘法

    也就是使用double数组存储多项式

    指数就是系数在数组中的下标

    2.7 * x1 就是 double arrA[1]=2.7

    1.2 * x2 存储方式为 double arrA[2]=1.2

    5.3 * x9 存储方式为 double arrA[9]=5.3

    那么两数相乘就是

    double arrA[N] double arrB[N] double arrC[N];

    arrC[i+j] = arrA[i] * arrB[j];

    由于double存储存在误差 所以判断double是否为零 是判断它与零的差是否小于一个极小值。

    我这里也写了一个函数 IsZero()

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    const int N = 1010;
    double arrA[N], arrB[N], arrC[2*N];
    int a, b,t;
    
    bool IsZero(double x)
    {
        if (x - 0 > 1e-8 || 0 - x > 1e-8) {return false;}
        return true;
    }
    
    int main()
    {
        scanf("%d", &a);
        for (int i = 0; i < a; i++) {
            scanf("%d",&t); scanf("%lf", &arrA[t]);
        }
    
        scanf("%d", &b);
        for (int i = 0; i < b; i++) {
            scanf("%d", &t); scanf("%lf", &arrB[t]);
        }
    
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                if (IsZero(arrA[i]) == false && IsZero(arrB[j]) == false)
                {
                    arrC[i + j] += arrA[i] * arrB[j];
                }
            }
        }
    
    
        int count = 0;
        for (int i = 0; i < 2 * N; i++) {
            if (IsZero(arrC[i]) == false) count++;
        }
    
        cout << count;
        for (int i = 2*N - 1; i >= 0; i--) {
            if (IsZero(arrC[i]) == false) {
                printf(" %d %.1lf",i,arrC[i]);
            }
        }
        printf("
    ");
    
        return 0;
    }
    
     
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    String、StringBuffer与StringBuilder的区别
    案例2:用一条SQL查询出数学语文成绩都大于80分的学生姓名?
    案例1:写一个压缩字符串的方法,例如aaaabbcxxx,则输出a4b2c1x3。
    jsp的九大内置对象及作用
    SQL语句总结2018-11-7
    kafka-spark streaming (一)
    python while嵌套循环
    docker-compose.yml样例(mysql主从+mycat读写分离)
    docker-compose管理daocker
    docker搭建私有registry
  • 原文地址:https://www.cnblogs.com/itdef/p/14394434.html
Copyright © 2011-2022 走看看