当前位置: 代码迷 >> 综合 >> PAT甲级真题 1002. A+B for Polynomials
  详细解决方案

PAT甲级真题 1002. A+B for Polynomials

热度:93   发布时间:2023-12-06 03:05:50.0

题目链接:https://www.patest.cn/contests/pat-a-practise/1002


题意:给我们两个多项式的每一位的指数和系数,让我们求解两个多项式的和。

题目给出的指数范围是0 ~ 1000,所以我们可以直接定义一个1000大小的数组来存储每一位的系数。最后我们再对每一位进行相加,再遍历一遍这个数组查看非0的位数,并将其打印出来。

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1005;
const double EPS = 1e-6;
double a[maxn], b[maxn];
int main() {int k1, k2;while(scanf("%d", &k1) != EOF) {memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));for(int i=0; i<k1; i++) {int n;double m;scanf("%d%lf", &n, &m);a[n] = m;}scanf("%d", &k2);for(int i=0; i<k2; i++) {int n;double m;scanf("%d%lf", &n, &m);b[n] = m;}for(int i=0; i<=1000; i++) {a[i] = a[i] + b[i];}int num = 0;for(int i=1000; i>=0; i--) {if(abs(a[i] - 0) > EPS) num++;}printf("%d", num);for(int i=1000; i>=0; i--) {if(abs(a[i] - 0) > EPS) {printf(" %d %.1lf", i, a[i]);}}printf("\n");}
}