解题思路:小模拟,认真考虑每种情况
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=105;
int n;
int a[N];
int main(){
scanf("%d",&n);
for(int i=0;i<=n;i++)scanf("%d",&a[i]);
int i=0;
int num=0;
while(i<=n){
if(a[i]!=0&&a[i]!=1&&a[i]!=-1){
if(i!=0&&num){
if(a[i]>0) printf("+");
}
printf("%d",a[i]);
if(n-i!=0){
if(n-i==1){
printf("x");
}
else{
printf("x^%d",n-i);
}
}
num++;
}
else{
if(a[i]==1||a[i]==-1){
if(i!=0&&num&&a[i]>0){
printf("+");
}
if(a[i]<0&&n-i!=0){
printf("-");
}
if(n-i!=0){
if(n-i==1){
printf("x");
}
else{
printf("x^%d",n-i);
}
}
else{
printf("%d",a[i]);
}
num++;
}
}
i++;
}
if(num==0)
printf("0");
return 0;
}