二元多項式

2021-07-23 05:52:38 字數 1999 閱讀 3556

time limit: 1000ms

memory limit: 65536kb

submit

statistic

discuss

problem description

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

input

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

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

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

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

output

輸出操作之後的結果。

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

example input

2 +

3x+4y^2+3xy+6x^10y^2+1

2x+6y

0

example output

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

hint

author

zp

#include #include #include #include #include #include using namespace std;

struct point

head[10];

char str[1100];

point * creat()

void build(point * root)

else if(str[i]=='x')

else if(str[i]=='y')

else if(str[i]=='+')

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

p->next=root->next;

root->next=p;

data=0;

ans=1;

p=creat();}}

if(data)

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

p->next=root->next;

root->next=p;

}void link(point *root,point *root)

p=p->next;

}root->next=temp->next;//將運算結果賦給root

free(temp);

}void sort(point *root)

else if(p->num==0&&q->num==0)

else

}p=p->next;

}p=root->next;

while(p)//排序

else if(p->x==q->x&&p->x)//存在未知數x並且x的冪相等時,比較y的冪

else if (p->yy&&p->y!=0)//x的冪相等,並且p->y不為0,交換

}

else if(p->x==q->x&&p->x==0)//x不存在時

}q=q->next;

}p=p->next;

}}void output(point *root)

if(p->num)

else

if(p->x)

if(p->y)

p=p->next;

}printf("\n");

}int main()

for(int i=1; i<=n; i++)//輸入n個二元多項式,並建立鍊錶儲存

if(c[0]=='+')//如果是加法進行連線,然後合併同類項,排序}}

else if(c[0]=='*')//如果是乘法,進行乘法運算,然後合併同類項,排序

}sort(&head[0]);

output(&head[0]);

}return 0;

}

二元多項式

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...

二元多項式

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