多項式加法 乘法

2021-06-22 17:20:56 字數 2281 閱讀 8141

學校acm上面的題目,題目不難,不少細節。本質就是鍊錶操作,首先是題目要求:

輸入 兩組資料,每一組代表乙個一元整係數多項式,有多行組成,其中每一行給出多項式每一項的係數和指數,這些行按指數遞減次序排序,每一組結束行為 

0 -1 

輸出 三組資料,前兩組為一元整係數多項式,最後一組為兩個多項式的和。 

一元整係數多項式輸出形式如下: 

(1)多項式項4x輸出為4x 

(2)多項式項4x2輸出為4x^2 

(3)第一項係數為正數時,加號不要輸出 

(4)除常係數項外,項係數為1不顯式輸出,-1輸出為- 

例如,4x3- x2+x-1正確輸出形式為4x^3-x^2+x-1,錯誤輸出形式為 +4x^3-1x^2+1x-1 

樣例輸入 

3 14 

-8 8 

6 2 

2 0 

0 -1 

2 10 

4 8 

-6 2 

0 -1 

樣例輸出 

3x^14-8x^8+6x^2+2 

2x^10+4x^8-6x^2 

3x^14+2x^10-4x^8+2 

(輸出格式要求比較麻煩,但輸入的要求讓建立鍊錶變得簡單)

下面是我的答案,建立、列印、加法操作、乘法操作分別寫成子程式

多項式加法:

#includeusing namespace std;

typedef struct nodenode;

void creat(node *first)//while

}void print(node *first)

else

if(p->exp==0&&(p->cof==1||p->cof==-1))cout<<1;

else if(p->exp==0){}

else if(p->exp==1)cout<<"x";

else cout<<"x^"p=p->next;

}//while

coutexp)return 0;

else if(p->exp>q->exp)return 1;

else return -1;

}void add(node *p,node *q)

else

break;

case 1://p指向的exp大於q指向的exp,插到q之前

tmp=new node();

tmp->cof=p->cof;

tmp->exp=p->exp;

q1->next=tmp;

q1=tmp;

tmp->next=q;

p=p->next;

break;

}

}int main()

多項式乘法:

#includeusing namespace std;

typedef struct nodenode;

void multiply(node *p,node *q,node *r)

if(t->exp==-1)

else if(tmp->exp==t->exp)

}else

q=q->next;

}q=q->next;

p=p->next;

}

}void creat(node *first)//while

}void print(node *first)

else

if(p->exp==0&&(p->cof==1||p->cof==-1))cout<<1;

else if(p->exp==0){}

else if(p->exp==1)cout<<"x";

else cout<<"x^"p=p->next;

}//while

coutfirst[i]->exp=-1;

first[i]->next=first[i];

creat(first[i]);

if(first[i]->next->exp!=-1)print(first[i]);

else cout<<0exp=-1,r->next=r;

multiply(first[0],first[1],r);

if(r->next->exp!=-1)print(r);

else cout<<0;

system("pause");

return 0;

}

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,第乙個表示冪次,第二個表示該冪次的係數...

多項式加法

題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...

多項式加法

給定兩個多項式p x 與q x 通過鍊錶實現它們的加法。有若干組,每組有2個多項式。每組輸入時先輸入第1個多項式,再輸入第2個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...