目錄
一、題目內容
二、輸入描述
三、輸出描述
四、輸入輸出示例
五、完整C語言代碼
一、題目內容
輸入兩個多項式,計算它們的和。 每個多項式有若干對整數表示,每組整數中,第一個整數表示系數(非0),第二個整數表示該項的次數。 如由3 3 5 -2 1 4 0表示3x^5 - 2 * x + 4其中第一個3表示該多項式由三個整數對表示。
二、輸入描述
輸入為兩行,分別表示兩個多項式。表示每項的整數對按照次數大小降序給出。(次數絕對值小于1000,系數絕對值小于10000)
三、輸出描述
按照降次順序輸出表示和多項式的整數對(系數為0的整數對不用輸出,整數對由空格分隔,最后一個整數對后不添加空格)
四、輸入輸出示例
輸入:
3 3 5 -2 1 4 0 4 2 3 -1 2 1 1 3 0輸出:
3 5 2 3 -1 2 -1 1 7 0
五、完整C語言代碼
AC代碼~#include<stdio.h>
#include<stdlib.h>
typedef struct number {int a;int b;
} num;int main() {int m, n;scanf("%d", &m);num* A = (num*)malloc(m * sizeof(num));for (int i = 0; i < m; i++)scanf("%d%d", &A[i].a, &A[i].b);scanf("%d", &n);num* B = (num*)malloc(n * sizeof(num));for (int i = 0; i < n; i++)scanf("%d%d", &B[i].a, &B[i].b);num* ans = (num*)malloc((m + n + 1) * sizeof(num));int i, j, k;i = j = k = 0;while (i < m && j < n) {if (A[i].b > B[j].b) {ans[k++] = A[i];i++;} else if (A[i].b < B[j].b) {ans[k++] = B[j];j++;} else {ans[k].b = A[i].b;ans[k].a = A[i].a + B[j].a;k++;i++;j++;}}while (i < m) {ans[k++] = A[i];i++;}while (j < n) {ans[k++] = B[j];j++;}for (i = 0; i < k - 1; i++)if (ans[i].a != 0)printf("%d %d ", ans[i].a, ans[i].b);if (ans[k - 1].a != 0)printf("%d %d\n", ans[k - 1].a, ans[k - 1].b);return 0;
}