今天我们分析的题目是PAT甲级的一道小题,多项式加法的简单模拟
原题请点击我
简单翻译:给出两个多项式,输出这两个多项式的和。
思路:这个问题标准的做法应该是使用链表来做的,但是因为题目中给的条件中,说了指数一定是正数,所以直接吧指数当成数组的下标直接运算即可。
当然了,如果指数可以是负数也无妨,我们可以给数组的下标一个小偏移,用来表示负数的情况,当然了,这里不需要考虑这种情况,因为指数本来就是正数。
简单模拟输出即可。
C代码:#includeint 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甲级的全部题解



