屎山代码
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int a[n+2];
    for (int i = 1; i <= n+1; i ++ ) cin >> a[i];
    for (int i = n,j = 1; j <= n; i -- , j ++ )
    {
        if (a[j] == 0)continue;
        //首项判断
        if (j == 1 )
        {
         if(a[j] > 1 || a[j] < -1) printf("%d",a[j]);
         if(a[j] == -1)printf("-");
         printf("x^%d",i);
        }
       //中间项
        if (1 < j&& j < n)
        {
            if(a[j] > 1)printf("+%d",a[j]);
            if(a[j] < -1)printf("%d",a[j]);
            if(a[j] == 1)printf("+");
            if(a[j] == -1)printf("-");
             printf("x^%d",i);
        }
        //n-1项判断
         if (j == n){
         if(a[j]==1)printf("+x");
         else if(a[j]== -1)printf("-x");
         else if(a[j] > 0)printf("+%dx",a[j]);
         else printf("%dx",a[j]);
        }
    }
    //常数项
    if(a[n+1] > 0)printf("+");
    if(a[n+1] != 0)printf("%d",a[n+1]);
    return 0;
}
// 64 位输出请用 printf("%lld")