學校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個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...