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