模拟

可以分三部分处理:

1、先处理符号,系数小于0输出'-',系数大于0且不是最高项输出'+';

2、其次处理项的系数,当系数绝对值非1或为常数项时直接输出该系数的绝对值;

3、最后处理项,非常数项输出'x',次数大于1的项输出'^'和次数。

(或者分四种情况,第n项,第1项,常数项,其它项,但这种方法写起来可能比较繁琐,比如说第n项情况里要考虑n是不是为0或1,如果是的话就只输出常数或系数+'x'...)

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int num,n;
    cin>>n;
    for(int i = n;i >= 0;i--){
        cin>>num;
        if(!num) continue;
        
        //先处理符号
        if(num < 0) cout<<"-";
        else if(i != n) cout<<"+";
        
        //再处理项的系数
        if(abs(num) != 1 || i == 0) cout<<abs(num);

        //最后处理项
        if(i > 0) cout<<"x";
        if(i > 1) cout<<"^"<<i;
    }
    return 0;
}