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分 好多點(diǎn)沒(méi)過(guò)?
#include <iostream> #include <cmath> #include <set> using namespace std;int ka, kb, ex, mx = -1, mn = 20, n = 0; //mx系數(shù)最高次,n是項(xiàng)數(shù) double a[1010], b[1010], c[1010]; //指數(shù)為i的系數(shù) 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分了 ?我真的迷醉 和滿分代碼沒(méi)差呀????
#include <iostream> using namespace std;int ka, kb, ex, n = 0; //mx系數(shù)最高次,n是項(xiàng)數(shù) double a[1010] = {0}; //指數(shù)為i的系數(shù) 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; }?
總結(jié)
以上是生活随笔為你收集整理的PAT甲级 -- 1002 A+B for Polynomials (25 分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PAT甲级 -- 1041 Be Uni
- 下一篇: PAT甲级 -- 1007 Maximu