P1067 [NOIP2009 普及组] 多项式输出 个人刷题010

该博客介绍了C++实现多项式输出的程序,重点包括处理不同情况的细节:如最高次项不显示+号,±1的特殊情况,以及0项的处理。代码中定义了两个辅助函数printNum和printX分别输出系数和指数,实现了多项式的正确格式化输出。

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

P1067 [NOIP2009 普及组] 多项式输出

P1067 [NOIP2009 普及组] 多项式输出

题解

本题还是比较简单的,主要是需要考虑的细节比较多。
1、开头最高次项不带+号
2、±1时,除了常数项,不需要显示1.
3、遇到0时的项不输出
4、x的一次方不需要写为x^1,而是x。

#include <iostream>
#include <cstdio>
using namespace std;


void printNum(int a[], int x, int n)
{
	if (a[x] == 0)
		return;

	if (x == n )
	{
		if (a[x] == -1)
		{
			printf("-");
		}
		else if (a[x] == 1)
		{
			return;
		}
		else
		{
			printf("%d", a[x]);
		}
	}
	else if (x == 0)
	{
		if (a[x] > 0)
		{
			printf("+");
			printf("%d", a[x]);
		}
		else if (a[x] < 0)
		{
			printf("%d", a[x]);
		}
	}
	else
	{
		if (a[x] > 0)
			printf("+");
		if (a[x] == -1)
			printf("-");
		else if (a[x] == 1)
		{
			return;
		}
		else
		{
			printf("%d", a[x]);
		}
	}
}

void printX(int x)
{
	if (x == 1)
		printf("x");
	else if (x == 0)
		return;
	else
	{
		printf("x^%d", x);
	}
}

int main()
{
	int n = 0;
	cin >> n;
	int a[100] = { 0 };	//记录系数
	for (int i = n; i >= 0; i--)
	{
		cin >> a[i];
	}

	for (int i = n; i >= 0; i--)
	{
		if (a[i] != 0)
		{
			printNum(a, i, n);
			printX(i);
		}
	}
	printf("\n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值