#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省略