#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n; if( cin >> n && n==0 ) return 0;
for(int i=n+1 ; i>0 ; --i){
int val; cin>>val;
if(val == 0) continue;
if(val ==0 && i==1 ) cout << endl;
if(i == n+1 ){
if(val>0){
if(val == 1){
cout << "x" << "^" << i-1 ;
}
else {
cout << val << "x" << "^" << i-1;
}
}
else{
if(val == -1){
cout << "-x" << "^" << i-1;
}
else {
cout << val << "x" << "^" << i-1;
}
}
} // case 1
else if(i > 2 && i < n+1){
if(val>0){
if(val == 1){
cout << "+" << "x" << "^" << i-1;
}
else {
cout << "+" <<val << "x" << "^" << i-1;
}
}
else{
if(val == -1){
cout << "-x" << "^" << i-1;
}
else {
cout << val << "x" << "^" << i-1;
}
}
} // case 2
else if(i == 2){
if(val>0){
if(val == 1){
cout << "+" << "x" ;
}
else {
cout << "+" <<val << "x" ;
}
}
else{
if(val == -1){
cout << "-x";
}
else {
cout << val << "x" ;
}
}
} // case 3
else if(i == 1){
if(val>0){
cout << "+" << val << endl ;
}
else{
cout << val << endl;
}
} // case 4
}
return 0;
}
```这是之前的代码,对每种情况进行讨论,冗余复杂
``` js#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n; cin>>n;
for(int i = n ; i >= 0 ; i-- ){
int val; cin >> val;
if(val == 0) continue;
if(i < n) val > 0 ? cout << "+" : cout << "-";
if(i == n && val < 0) cout << "-";
if(i > 1){
cout << (abs(val)==1 ?"": to_string(abs(val))) << "x^" << i ;
}
else if(i == 1 ){
cout << (abs(val)==1 ?"": to_string(abs(val))) << "x";
}
else if(i == 0){
cout << abs(val) << endl ;
}
}
return 0;
}
```后面利用三目运算符,将val==1 和 val==-1的情况讨论,主要是x的1次省略,还有i==n时候正数的符号省略,i==0将x省略