題目鏈結
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...