PAT甲级 -- 1002 A+B for Polynomials (25 分)
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?????(i=1,2,?,K) are the exponents and coefficients, respectively. It is given that?1≤K≤10,0≤N?K??<?<N?2??<N?1??≤1000.
Output Specification:
For each test case you should output the sum 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 to 1 decimal place.
Sample Input:
2 1 2.4 0 3.2 2 2 1.5 1 0.5Sample Output:
3 2 1.5 1 2.9 0 3.215分 好多點沒過?
#include <iostream> #include <cmath> #include <set> using namespace std;int ka, kb, ex, mx = -1, mn = 20, n = 0; //mx系數最高次,n是項數 double a[1010], b[1010], c[1010]; //指數為i的系數 double xishu; set<int> xiangshu;int main() {scanf("%d", &ka);for(int i = 0; i < ka; i++){scanf("%d %lf", &ex, &xishu);a[ex] = xishu;xiangshu.insert(ex);mx = max(mx, ex);mn = min(mn,ex);}scanf("%d", &kb);for(int i = 0; i < kb; i++){scanf("%d %lf", &ex, &xishu);b[ex] = xishu;xiangshu.insert(ex);mx = max(mx, ex);mn = min(mn,ex);}printf("%d ", xiangshu.size());for(int i = mx; i >= mn; i--){if(i != mn){c[i] = a[i] + b[i];printf("%d %.1f ", i, c[i]);}else{c[i] = a[i] + b[i];printf("%d %.1f", i, c[i]);}}return 0; }?
滿分代碼:
#include<cstdio> #include<iostream> using namespace std; const int maxn = 1111; double p[maxn] = {}; int main() {int k, n, count = 0;double a;scanf("%d", &k);for(int i = 0; i < k; i++) {scanf("%d %lf", &n, &a);p[n] += a;}scanf("%d", &k);for(int i = 0; i < k; i++) {scanf("%d %lf", &n, &a);p[n] += a;}for(int i = 0; i < maxn; i++) {if(p[i] != 0) {count++;}}printf("%d", count);for(int i = maxn; i >= 0; i--) {if(p[i] != 0) {printf(" %d %.1f", i, p[i]);}}return 0; }照著滿分修改后代碼:
竟然只有2分了 ?我真的迷醉 和滿分代碼沒差呀????
#include <iostream> using namespace std;int ka, kb, ex, n = 0; //mx系數最高次,n是項數 double a[1010] = {0}; //指數為i的系數 double xishu;int main() {scanf("%d", &ka);for(int i = 0; i < ka; i++){scanf("%d %lf", &ex, &xishu);a[ex] += xishu;}scanf("%d", &kb);for(int i = 0; i < kb; i++){scanf("%d %lf", &ex, &xishu);a[ex] += xishu;}for(int i = 1010; i >= 0; i--){if(a[i] != 0){n++;}}printf("%d", n);for(int i = 1010; i >= 0; i--){if(a[i]!=0){printf(" %d %.1f", i, a[i]);}}return 0; }?
總結
以上是生活随笔為你收集整理的PAT甲级 -- 1002 A+B for Polynomials (25 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级 -- 1041 Be Uni
- 下一篇: PAT甲级 -- 1007 Maximu