原题链接:P1067 [NOIP2009 普及组] 多项式输出 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
知识点:数论,数学模拟
题目大意:用代码来表示一元多项式
解题思路:一元多项式,根据所给的例子可得,前n-2项的形式相同,可放在一起进行if判断要注意的是需要另判断系数非零时为1和-1的情况。然后再判断第n-1项,x的指数部分为1,再进行同上判断,最后一项为常数项,仍需另判1和-1的情况
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
int main()
{
cin>>n;
int a[n+5],b[n+5];
for(int i=0;i<=n;i++)//读入
{
cin>>a[i];//系数部分
b[i]=n-i;//指数部分
}
for(int i=0;i<=n-2;i++)//从0至n-2的部分形式相同
{
if(a[i]>0&&i>=1)
{
cout<<"+";
}
if(a[i]!=0&&a[i]!=1&&a[i]!=-1)//特判系数为1和-1
{
cout<<a[i]<<"x^"<<b[i];
}
if(a[i]==1)
{
cout<<"x^"<<b[i];
}
if(a[i]==-1)
{
cout<<"-x^"<<b[i];
}
}
if(a[n-1]!=0)//倒数第二项的指数部分为1
{
if(a[n-1]>0)
{
if(a[n-1]!=1)
{
cout<<"+"<<a[n-1]<<"x";
}
if(a[n-1]==1)
{
cout<<"+"<<"x";
}
}
if(a[n-1]<0)
{
if(a[n-1]!=-1)
{
cout<<a[n-1]<<"x";
}
if(a[n-1]==-1)
{
cout<<"x";
}
}
}
if(a[n]!=0)//最后一项为常数项
{
if(a[n]>0)
{
cout<<"+"<<a[n];
}
if(a[n]<0)
{
cout<<a[n];
}
}
return 0;
}