PAT-A 1002. A+B for Polynomials (25)

来源:互联网 发布:js给class加样式 编辑:程序博客网 时间:2024/06/14 03:12

注意点:
保留一位小数;考虑相加为零的项;题目中没说最终结果为零的情况

#include<iostream>#include<iomanip>using namespace std;struct poly{  int ye;  double yc;};int main(){  struct poly a[10], b[10], ans[20];  int k1, k2, i, k3 = 0;  int t1 = 0, t2 = 0;  cin >> k1;  for (i = 0; i < k1; i++)    cin >> a[i].ye >> a[i].yc;  cin >> k2;  for (i = 0; i < k2; i++)    cin >> b[i].ye >> b[i].yc;  while (t1 < k1 && t2 < k2)  {    if (a[t1].ye > b[t2].ye)    {      ans[k3] = a[t1];      t1++;      k3++;      continue;    }    if (a[t1].ye < b[t2].ye)    {      ans[k3] =b[t2];      t2++;      k3++;      continue;    }    if (a[t1].yc + b[t2].yc > 0.01 || a[t1].yc + b[t2].yc < -0.01)    {      ans[k3].ye = a[t1].ye;      ans[k3].yc = a[t1].yc + b[t2].yc;      k3++;    }    t1++;    t2++;  }    for (i = t1; i < k1; i++)    {      ans[k3] = a[i];      k3++;    }    for (i = t2; i < k2; i++)    {      ans[k3] = b[i];      k3++;    }  if (k3 == 0)  {    cout << "0" << endl;    return 0;  }  cout << k3;  cout.setf(ios::fixed);  for (i = 0; i < k3; i++)  {    cout << " " << ans[i].ye << " ";    cout << fixed << setprecision(1) << ans[i].yc;  }  return 0;}
原创粉丝点击