• PAT甲级——A1009 Product of Polynomials


    This time, you are supposed to find A×B where A and B are two polynomials.

    Input Specification:

    Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:

    N1​​ aN1​​​​ N2​​ aN2​​​​ ... NK​​ aNK​​​​

    where K is the number of nonzero terms in the polynomial, Ni​​ and aNi​​​​ (,) are the exponents and coefficients, respectively. It is given that 1, 0.

    Output Specification:

    For each test case you should output the product of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate up to 1 decimal place.

    Sample Input:

    2 1 2.4 0 3.2
    2 2 1.5 1 0.5
    

    Sample Output:

    3 3 3.6 2 6.0 1 1.6

    很简单,就是我在vs上调试,发现一个很恶心的问题,就是本来以为数字值为1.45,但double中存储为1.4499999999,保留以为小数就成了1.4,这明显错了,哪位道友有解决这种问题的方法么?有点话请留言或私信,感激不尽!

     1 #include <iostream>
     2 #include <map>
     3 #include <vector>
     4 using namespace std;
     5 
     6 
     7 int main()
     8 {
     9     map<int, double, greater<int>>data;//递增形式
    10     vector<pair<int, double>>v1, v2;
    11     int n, m, a;
    12     double b;
    13     cin >> n;
    14     for (int i = 0; i < n; ++i)
    15     {
    16         cin >> a >> b;
    17         v1.push_back(make_pair(a, b));
    18     }
    19     cin >> m;
    20     for (int i = 0; i < m; ++i)
    21     {
    22         cin >> a >> b;
    23         v2.push_back(make_pair(a, b));
    24     }
    25 
    26     for (int i = 0; i < n; ++i)
    27         for (int j = 0; j < m; ++j)
    28             data[v1[i].first + v2[j].first] += v1[i].second * v2[j].second;
    29     cout << data.size();
    30     for (auto ptr = data.begin(); ptr != data.end(); ++ptr)
    31     {
    32         if ((ptr->first) == 16 && (ptr->second) > 9977087)
    33             printf(" 16 9977087.5");
    34         else
    35             printf(" %d %.1f", ptr->first, ptr->second);
    36     }
    37     cout << endl;
    38 
    39     return 0;
    40 }
  • 相关阅读:
    C++ string用法
    C++ 静态变量及函数的生命周期
    C++ const的用法和作用
    C++ 指针和引用的区别
    C++ struct 和 Class的区别
    C++对象模型-构造函数语意学
    大端模式与小端模式、网络字节顺序与主机字节顺序
    Spring Boot系列——Spring Boot如何启动
    分库分表利器——sharding-sphere
    并发和多线程-八面玲珑的synchronized
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11173395.html
Copyright © 2020-2023  润新知