设计函数分别求两个一元多项式的乘积与和。
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
#include
#include
int main(){
int a[1005], b[1005], multi[2005], sum[1005], n, m, num1, num2, flag = 0;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(multi, 0, sizeof(multi));
memset(sum, 0, sizeof(sum));
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d%d", &num1, &num2);
a[num2] = num1;
sum[num2] += num1;
}
scanf("%d", &m);
for(int i = 0; i < m; i++){
scanf("%d%d", &num1, &num2);
b[num2] = num1;
sum[num2] += num1;
}
for(int i = 0; i < 1005; i++){
for(int j = 0; j < 1005; j++){
if(a[i] != 0 && b[j] != 0){
multi[i + j] += a[i]*b[j];
}
}
}
for(int i = 2004; i >= 0; i--){
if(multi[i] != 0) {
if(!flag){
flag = 1;
printf("%d %d", multi[i], i);
}
else
printf(" %d %d", multi[i], i);
}
}
if(!flag) printf("0 0");
flag = 0;
printf("\n");
for(int i = 1004; i >= 0; i--){
if(sum[i] != 0) {
if(!flag){
flag = 1;
printf("%d %d", sum[i], i);
}
else
printf(" %d %d", sum[i], i);
}
}
if(!flag) printf("0 0");
return 0;
}
稍微简化版
#include
#include
int main(){
int a[1005], b[1005], multi[2005], sum[1005], n, m, num1, num2, flag = 0;
for(int i = 0; i < 1005; i++)
a[i] = b[i] = sum[i] = 0;
memset(multi, 0, sizeof(multi));
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d%d", &num1, &num2);
a[num2] = num1;
sum[num2] += num1;
}
scanf("%d", &m);
for(int i = 0; i < m; i++){
scanf("%d%d", &num1, &num2);
b[num2] = num1;
sum[num2] += num1;
}
for(int i = 0; i < 1005; i++){
for(int j = 0; j < 1005; j++){
if(a[i] != 0 && b[j] != 0) multi[i + j] += a[i]*b[j];
}
}
for(int i = 2004; i >= 0; i--){
if(multi[i] != 0) {
if(!flag){
flag = 1;
printf("%d %d", multi[i], i);
}
else
printf(" %d %d", multi[i], i);
}
}
if(!flag) printf("0 0");
flag = 0;
printf("\n");
for(int i = 1004; i >= 0; i--){
if(sum[i] != 0) {
if(!flag){
flag = 1;
printf("%d %d", sum[i], i);
}
else
printf(" %d %d", sum[i], i);
}
}
if(!flag) printf("0 0");
return 0;
}