1002 A+B for Polynomials (25 分)
今天我们分析的题目是PAT甲级的一道小题,多项式加法的简单模拟
原题请点击我
简单翻译:
给出两个多项式,输出这两个多项式的和。
思路:
这个问题标准的做法应该是使用链表来做的,但是因为题目中给的条件中,说了指数一定是正数,所以直接吧指数当成数组的下标直接运算即可。
当然了,如果指数可以是负数也无妨,我们可以给数组的下标一个小偏移,用来表示负数的情况,当然了,这里不需要考虑这种情况,因为指数本来就是正数。
简单模拟输出即可。
C代码:
#include<stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
double a[1001];
for (int i = 0; i < 1001; i++) {
a[i] = 0;
}
int temp1 = 0;
double temp2 = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &temp1);
scanf("%lf", &temp2);
a[temp1] += temp2;
}
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &temp1);
scanf("%lf", &temp2);
a[temp1] += temp2;
}
int count = 0;
for (int i = 0; i < 1001; i++) {
if (a[i] != 0) {
count++;
}
}
printf("%d", count);
for (int i = 1000; i >= 0; i--) {
if (a[i] != 0) {
printf(" %d %.1lf", i, a[i]);
}
}
}
点我看PAT甲级的全部题解
|