加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

PAT甲级——A1009 Product of Polynomials

发布时间:2020-12-13 22:40:45 所属栏目:Linux 来源:网络整理
导读: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: K? N ? 1 ??? a

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:

K?N?1???a?N?1?????N?2???a?N?2?????...?N?K???a?N?K????

where?K?is the number of nonzero terms in the polynomial,?N?i???and?a?N?i?????(,) 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:



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

3 3 3.6 2 6.0 1 1.6
 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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读