luogu1067:多项式输出:模拟:NOIP2009普及T1

题目链接:该题是luogu试炼场的2-1:T2


试炼场2-1题解包:

2-1 简单模拟  
题号 题目 备注
1003 铺地毯 逆向查找
1067 多项式输出 分段模拟
1540 机器翻译 循环队列
1056 排座椅 统计排序
1328 生活大爆炸版石头剪刀布 暴力模拟
1563 玩具谜题 环形思维

题目大意:

给出多显示的最高项n,给出各项的系数,要求按照数学规范输出该多项式;


解题思路:

分段讨论:需要考虑系数的符号;


上代码:

//luogu试炼场2-1:2:1067:多项式输出 
//2009普及组T1:纯手工模拟,分段处理:考虑系数的符号问题 

#include
#include

int n,a[110];

int main()
{
	scanf("%d",&n);//有n项 
	
	scanf("%d",&a[1]);//第一项单独处理:最少会有一项 
	if(a[1]!=0)
	{
		if(a[1]==1) printf("x^%d",n);
		else if(a[1]==-1) printf("-x^%d",n);
		else printf("%dx^%d",a[1],n);
	}
		
	for(int i=2;i<=n-1;i++)//中间的(n-2)项 
	{	
		scanf("%d",&a[i]);	
		if(a[i]!=0)
		{
			if(a[i]>0) printf("+");
			
			if(a[i]==1) printf("x^%d",n-i+1);
			else if(a[i]==-1) printf("-x^%d",n-i+1);
			
			else printf("%dx^%d",a[i],n-i+1);
		}
	}
	
	scanf("%d%d",&a[n],&a[n+1]);//最后两项 
	if(a[n]>0) 
	{
		printf("+"); 
		if(a[n]==1) printf("x");
		else printf("%dx",a[n]);
	}
	if(a[n]<0)
	{
		if(a[n]==-1) printf("-x");
		else printf("%dx",a[n]);
	}
	if(a[n+1]!=0)
	{
		if(a[n+1]>0) printf("+");
		printf("%d",a[n+1]);
	}


	return 0;
}

 

你可能感兴趣的:(题解,luogu,NOIP真题,大礼包,题表)