题解 P1067 【多项式输出】

Hexarhy

2018-07-06 17:08:00

Solution

**这道题目就是坑点多,分类多!** 要注意: 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 }