02-線性結構2 一元多項式的乘法與加法運算

沒什麼難點,感覺最後控制格式那裏有點麻煩,可能是我寫的不好

#include<iostream>
#include<stdio.h>
#include<string.h>
#define MAXN  1002
using namespace std;

void add(int a[],int b[],int c[]){
    for(int i = 0;i < MAXN;i++){
        c[i] = b[i] + a[i];
    }
}
void multiply(int a[],int b[],int c[]){
    for(int i=0;i<MAXN;i++){
        if(a[i] != 0){
            for(int j=0;j < MAXN;j++){
                if(b[j] != 0)c[i+j] += a[i]*b[j];
            }
        }
    }
}
int main(){
    int n,m,i,j,x,y;
    int a[MAXN],b[MAXN],c[MAXN*2],d[MAXN];
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    memset(d,0,sizeof(d));
    cin >>  n;
    while(n--){
        cin >> y >> x;
        a[x] = y;
    }
    cin >> m;
    while(m--){
        cin >> y >> x;
        b[x] = y;
    }
    add(a,b,d);
    multiply(a,b,c);
    //cout << a[4];
    //cout << b[4];
    //cout << d[4];
    int min,sum = 0;
    for(int i = 0;i < MAXN*2;i++){
        if(c[i] !=0){min = i;break;} 
    }
    for(int i = MAXN*2-1;i >= 0;i--){
        if(c[i] != 0){
            sum = 1;
            cout << c[i] << " " << i ;
            if(i != min)cout << " ";
        }

    }
    if(sum ==0)cout << 0 << " " << 0 ;
    cout << endl;
    for(int i = 0;i < MAXN;i++){
        if(d[i] != 0){
        min = i;
        break;
    }
    }
    sum = 0;
    for(int i=MAXN-1;i >= 0;i--){
        if(d[i] != 0){
            sum = 1;
            cout << d[i] << " "  << i;
            if(i != min)cout << " ";
        }
    }
    if(sum == 0)cout << 0 << " " << 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章