题目链接:https://www.luogu.org/problemnew/solution/P1067
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn =110;
int A[maxn],n,m;
int main(void)
{
cin>>n;
for(int i=1;i<=n+1;i++)
{
cin>>A[i];
}
int flag=true;//标记第一个是否输出
for(int i=1;i<=n+1;i++)
{
int m=n-i+1; //x的幂次方
if(A[i]!=0) //此时需要输出内容
{
//首先是输出正负号!!!
if(flag==true)//第一次输出,正号不用输出
{
flag=false;
if(A[i]<0) printf("-");
}
else//不是第一次输出,如果是正数,输出正号,否则,输出负号
{
if(A[i]>0) printf("+");
else printf("-");
}
//输出系数,如果系数为1或者-1,特殊处理
if(A[i]!=1 && A[i]!=-1)
{
if(A[i]>0) printf("%d",A[i]);
else printf("%d",-A[i]);
}
//输出x的幂次方
if(m!=0)
{
if(m!=1)
printf("x^%d",m);
else
printf("x");
}
else //m=0
{
if(A[i]==-1 || A[i]==1)
printf("1");
}
}
}
return 0;
}