PAT-A 1009. Product of Polynomials (25)

来源:互联网 发布:ati mac驱动 编辑:程序博客网 时间:2024/05/16 08:32

注意点:
把两个多项式每一项分别相乘,然后每一项结果用一个插入排序放入到一个序列中去。注意几项次数相同的相加为零的情况。

代码:

#include<iostream>#include<iomanip>using namespace std;struct Elem{  double co;  int ex;};int main(){  struct Elem a[20], b[20], c[200];  int i, j, k, l, n1, n2;  int ex1, length, num;  double co1;  cin >> n1;  for (i = 0; i < n1; i++)    cin >> a[i].ex >> a[i].co;  cin >> n2;  for (i = 0; i < n2; i++)    cin >> b[i].ex >> b[i].co;  length = 0;  for (i = 0; i < 200; i++)    c[i].ex = -1;  for (i = 0; i < n1; i++)    for (j = 0; j < n2; j++)    {      ex1 = a[i].ex + b[j].ex;      co1 = a[i].co*b[j].co;      if (length == 0)      {        c[0].ex = ex1;        c[0].co = co1;        length++;      }      else      {        l = 0;        while (c[l].ex > ex1)          l++;        if (c[l].ex == ex1)        {          c[l].co += co1;        }        else        {          for (k = length; k > l; k--)            c[k] = c[k - 1];          c[l].ex = ex1;          c[l].co = co1;          length++;        }      }    }  num = 0;  for (i = 0; i < length; i++)    if (c[i].co > 0.01 || c[i].co < -0.01)      num++;  cout << num;  cout.setf(ios::fixed);  for (i = 0; i < length; i++)    if (c[i].co > 0.01 || c[i].co < -0.01)    {      cout << " " << c[i].ex;      cout << fixed << setprecision(1) << " " << c[i].co;    }  cout << endl;  return 0;}
原创粉丝点击