码迷,mamicode.com
首页 > 其他好文 > 详细

PAT甲级——A1009 Product of Polynomials

时间:2019-07-11 23:16:26      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:cin   lis   ber   script   end   html   数字   please   reset   

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:

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:

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 }

 

PAT甲级——A1009 Product of Polynomials

标签:cin   lis   ber   script   end   html   数字   please   reset   

原文地址:https://www.cnblogs.com/zzw1024/p/11173395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!