二元多項式

2021-08-07 06:49:14 字數 2188 閱讀 1037

題目鏈結

problem description

給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。

input

首先輸入二元多項式的個數n和操作符號(『+』,『*』);

後面n行輸入每乙個多項式。

多組輸入,當n=0的時候結束輸入。

(n<5,二元多項式的長度小於1000,二元多項式都是由x,y,^,數字,』+』組成的)

output

輸出操作之後的結果。

(輸出的順序按照:x2>x>xy2>xy>y^2>y>常數)

example input

2 +3x+4y2+3xy+6x10y^2+1

2x+6y

0example output

6x10y2+5x+3xy+4y^2+6y+1

#include

#include

#include

#include

using namespace std;

#define maxn 12

typedef

struct nodenode,

*node;

//煉表頭結點

node t[maxn]

;char str[

12121];

//輸入的表示式

node creat()

;void

build

(node root)

else

if(str[i]

=='x'

)else

if(str[i]

=='y'

)else

if(str[i]

=='+')}

//出迴圈之後,字串的最前面,沒有'+',所以要再次建立

if(data)

//如果data存在

p->num = data;

//就是多項式的係數

else

if(p->x||p->y)

//如果x或者y存在

p->num =1;

//係數為1

//逆序建立鍊錶

p->next = root->next;

root->next = p;

}void

link

(node root, node root)

p = p->next;

} root->next = temp->next;

//將新鍊錶給了舊鍊錶的頭結點

free

(temp)

;//釋放空間,將暫時儲存新鍊錶的空間釋放

}void

sort

(node root)

else

if(p->num==

0&&q->num==0)

else

} p = p->next;

}//接下來就是按照指數多少排序

p=root->next;

//p指向鍊錶的開始

while

(p)else

if(p->x==q->x&&p->x)

else

if(p->yy&&p->y!=0)

//當然,其他情況也有,但是不用交換,就忽略

}else

if(p->x==q->x&&p->x==0)

} q = q->next;

} p = p->next;}}

void

output

(node root)

else

if(p->x)

if(p->y)

p = p->next;

} cout<}int

main()

if(c[0]

=='+')}

else

if(c[0]

=='*'

)sort

(&t[0]

);//合併鍊錶

output

(&t[0]

);//輸出

}return0;

}

二元多項式

time limit 1000ms memory limit 65536k 有疑問?點這裡 給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。首先輸入二元多項式的個數n和操作符號 後面n行輸入每乙個多項式。多組輸入,當n 0的時候結束輸入。n 5,二元多項式的長度小於100...

二元多項式

給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。首先輸入二元多項式的個數n和操作符號 後面n行輸入每乙個多項式。多組輸入,當n 0的時候結束輸入。n 5,二元多項式的長度小於1000,二元多項式都是由x,y,數字,組成的 輸出操作之後的結果。輸出的順序按照 x 2 x x...

二元多項式

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 給你多個二元多項式和乙個操作符,讓你輸出操作符操作這些二元多項式之後的結果。input 首先輸入二元多項式的個數n和操作符號 後面n...