题解 P1067 【多项式输出】
Hexarhy
2018-07-06 17:08:00
**这道题目就是坑点多,分类多!**
要注意:
1)开头特判+号,PS:不一定是第一项,而是第一个不为0系数的项。
2)注意0系数,0次数,1次数,1(-1)系数。
3)更变态QAQ:可能会出现以上嵌套的分类。
所以呢,详细分类就会在程序里面体现。
(本蒟蒻第一次发题解 罒ω罒)
———————————————华丽丽的分割线———————————————
完整代码如下:cpp
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,a;
cin>>n;
bool f=false; //判开头+号用的
for(int i=n;i>=0;i--)//逆序,方便存次数
{
cin>>a;
if(a)//避免0系数
{
if(!f)//如果是第一个不为0次的项,就要嵌套判断QWQ
{
if(abs(a)>1||i==0)//0指数 且 非1(-1)系数
cout<<a; //直接输出系数
if(a==-1 && i) //变-号 且 不是0指数
cout<<"-";
if(i==1) //1指数的特判
cout<<"x";
if(i>1)//其余的就正常处理
cout<<"x^"<<i;
f=true;//记得标记已经特判不输出+号
continue;//不知要不要continue,反正我是AC了
}
//以下部分跟上面同理
if(f && a>0)
cout<<"+";
if(abs(a)>1||i==0)
cout<<a;
if(a==-1 && i)
cout<<"-";
if(i==1)
cout<<"x";
if(i>1)
cout<<"x^"<<i;
}
}
return 0; //不忘return
}