#include<stdio.h>
int main()
{
//输入
int n,i,h=0;
scanf("%d",&n);
int a[n+1];
for(i=0;i<=n;i++)
{
scanf("%d",&a[i]);
}
//多次向输出
for(i=0;i<n-1;i++)
{
if(a[i]==0) a[i]=0; //0为系数不输出该项
else if(h==0) //判断是否为第一位输出
{
if(a[i]==1) printf("x^%d",n-i); //第一位输出正数不输出符号,+1为系数时不输出系数
else if(a[i]==-1) printf("-x^%d",n-i); //-1为系数时不输出系数
else if(a[i]>0) printf("%dx^%d",a[i],n-i); //第一位输出正数不输出符号,非1的正数输出
else if(a[i]<0) printf("%dx^%d",a[i],n-i); //非-1的正数输出
h=1; //标注为已输出第一项
}
else if(a[i]==1) printf("+x^%d",n-i); //1为系数时不输出系数,但非第一位输出正数带+号
else if(a[i]==-1) printf("-x^%d",n-i); //-1为系数是不输出系数
else if(a[i]>0) printf("+%dx^%d",a[i],n-i); //非1的正数输出,但非第一位输出正数带+号
else if(a[i]<0) printf("%dx^%d",a[i],n-i); //非-1的正数输出
}
//一次项输出 (指数为1时不显示指数)
if(h==0&&a[n-1]!=0)
{
if(a[n-1]==1) printf("x");
else if(a[n-1]==-1) printf("-x");
else if(a[n-1]>0) printf("%dx",a[i]);
else if(a[n-1]<0) printf("%dx",a[i]);
h=1;
}
else if(a[n-1]==1) printf("+x");
else if(a[n-1]==-1) printf("-x");
else if(a[n-1]>0) printf("+%dx",a[i]);
else if(a[n-1]<0) printf("%dx",a[i]);
//常数项输出
if(h==0) printf("%d",a[n]); //只有常数项正常输出
else if(a[n]==0) a[n]=0;
else if(a[n]>0) printf("+%d",a[n]);
else if(a[n]<0) printf("%d",a[n]);
}
洛谷P1067 多项式输出 C语言
于 2023-09-05 23:34:56 首次发布