老实说,我写的并不十分好。
/*
* NOIP-2009-A-A 多项式输出
* mike-w
* 2011-10-12
* KISS principle
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#define MAXN 111
int p[MAXN];
int N;
int main(void)
{
int i;
scanf("%d",&N);
for(i=1;i<=N+1;i++)
scanf("%d",p+N-i+1);
for(i=N;i>=0;i--)
if(p[i])
break;
if(i==0)
{
printf("%d\n",p[i]);
return 0;
}
else if(i==1) printf("%dx",p[i]);
else if(p[i]<-1) printf("%dx^%d",p[i],i);
else if(p[i]==-1) printf("-x^%d",i);
else if(p[i]>1) printf("%dx^%d",p[i],i);
else printf("x^%d",i);
for(i--;i>0;i--)
{
if(i>1)
{
if(p[i]==0) continue;
if(p[i]>1) printf("+%dx^%d",p[i],i);
else if(p[i]==1) printf("+x^%d",i);
else if(p[i]==-1) printf("-x^%d",i);
else printf("%dx^%d",p[i],i);
}
else
{
if(p[i]==0) continue;
if(p[i]>1) printf("+%dx",p[i]);
else if(p[i]==1) printf("+x");
else if(p[i]==-1) printf("-x");
else printf("%dx",p[i]);
}
}
if(p[0]>0)
printf("+%d\n",p[0]);
else if(p[0]<0)
printf("%d\n",p[0]);
else
putchar('\n');
return 0;
}