zoukankan      html  css  js  c++  java
  • 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调为基准)
    小程序页面跳转问题
    Adobe-premierej剪辑视频分辨率问题及格式转换画面质量分辨率
    关于ps抠图问题,制作公章,公章的复制
    premiere视频剪辑关于导出视屏分辨率的问题
    最后一个单词的长度
    10.两个链表的交叉
    软件工程——个人总结
    软件工程——团队专业4
    软件工程——团队答辩
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11173395.html
Copyright © 2011-2022 走看看