PAT 甲级 1002 A+B for Polynomials

题目大意:题目地址>>>>>>>>>传送门


 

input:

   输入共站两行,多项式A和B各站一行,且每行第一个数k代表这个多项式有k个非0项,随后输入k组数据,每组数据表示每项的指数和系数:
    2 1 2.4 0 3.2       //多项式A 这里k=2,1为第一项的指数,2.4为其系数   
    2 2 1.5 1 0.5       //多项式B 同上

output:

      3 2 1.5 1 2.9 0 3.2       //输出多项式A+B,表示规则与输入相同<指数大的在前面>

注意事项:

1.和为0的项不输出
2.每行后没有空格

 

S-code:

#include<iostream>
#include<cstring>
#include<iomanip>    //cout输出格式控制 using namespace std; double a[1001]; int main() { int n1, n2, flag; memset(a, 0,sizeof(a)); cin >> n1; for(int i = 0; i < n1; i++) { cin >> flag; cin >> a[flag]; } cin >> n2; double x; for(int i = 0; i < n2; i++) { cin >> flag; cin >> x; if(a[flag] != 0)              //减去A中存在项 n1--; a[flag] += x; if(a[flag] == 0) n1--;       //减去和为0的项 } cout << n1+n2;                 //输出总的非0项,若多项式之和为0,这里输出一个0即可 for(int i = 1000; i >= 0; i--) { if(a[i] != 0) cout << " " << i << " " << fixed << setprecision(1)<< a[i];    //用fixed + setprecision(x),控制保留x位小数 } return 0; }

 注意:

   若仅后四项检测点未通过,大概率是未减去和系数为0的项(k的值),别问我为什么直到。。。。。。

原文地址:https://www.cnblogs.com/sunrisepeak/p/9751342.html