NOIP2009 普及组 复赛 poly 多项式输出
//洛谷 p1067 多项式输出
//难度:普及-
//考点:输入,输出 ,输出格式按要求进行处理
//适用:小学生
//陷阱:要注意的条件比较多,容易忽略:如果 x 的指数为 1,则接下来紧跟的指数部分形式为“x”;
//题目特点:样例里基本涉及大多的特殊情况,但不完备。通过该题,具有一定的题目记忆能力是必需的。
//思考:该题要注意地方有,第一项,常数项,x的一次方项,系数为0,系数为-1,系数为1,需要注意的地方有6处。
附上AC代码,编译环境Dev-C++4.9.9.2
#include <stdio.h>
int a[100+10];
int main(){
int n;
int i;
scanf("%d",&n);
for(i=1;i<=n+1;i++)
scanf("%d",&a[i]);
if(a[1]!=0)//第一项处理
if(a[1]>0)//大于0
if(a[1]==1)
printf("x^%d",n);
else
printf("%dx^%d",a[1],n);
else//小于0
if(a[1]==-1)
printf("-x^%d",n);
else
printf("%dx^%d",a[1],n);
for(i=2;i<=n-1;i++)//中间项处理
if(a[i]!=0)
if(a[i]>0)//大于0
if(a[i]==1)
printf("+x^%d",n-i+1);
else
printf("+%dx^%d",a[i],n-i+1);
else//小于0
if(a[i]==-1)
printf("-x^%d",n-i+1);
else
printf("%dx^%d",a[i],n-i+1);
if(a[n]!=0)//x的一次项处理
if(a[i]>0)//大于0
if(a[i]==1)
printf("+x");
else
printf("+%dx",a[i]);
else//小于0
if(a[i]==-1)
printf("-x");
else
printf("%dx",a[i]);
if(a[n+1]!=0)//最后一项处理
if(a[n+1]>0)//大于0处理
printf("+%d\n",a[n+1]);
else//小于0处理
printf("%d\n",a[n+1]);
return 0;
}