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

这篇博客介绍了如何解决luogu试炼场中的一个多项式输出问题。题目要求根据给定的最高项n和各项系数,按照数学规范输出多项式。解题策略涉及对系数符号的分段讨论。提供了详细的解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


试炼场2-1题解包:

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

题目大意:

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


解题思路:

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


上代码:

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

#include<cstdio>
#include<cstring>

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值