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