
解题思路:先处理第一个系数,因为第一个系数前面的符号为+时,不用写,然后处理最后一个数,因为它是一个常数,至于中间的数都统一处理,先判断他的正负输出它的符号,然后判断他们的绝对值是否为1,如果为1就不输出系数,如果不唯一就输出绝对值,然后判断是不是倒数第二项,因为倒数第二项不用输出指数部分。
注意:要用一个标志位来记录,是否全为0,如果全为0就直接输出0;
cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int arr[101];
int main(){
cin>>n;
for(int i=n;i>=0;i--){
cin>>arr[i];
}
int num=0;
for(int i=n;i>=0;i--){
int m=arr[i];
if(m==0){
num++;
continue;
}
if(i==n){
if(m>0){}
else cout<<"-";
}
if(i!=n){
if(m>0){
cout<<"+";
}else{
cout<<"-";
}
}
if(i==0){
cout<<fabs(m);
break;
}
if(m!=1&&m!=-1){
cout<<fabs(m);
}
cout<<"x";
if(i!=1){
cout<<"^"<<i;
}
}
if(num==n+1){
cout<<0;
}
return 0;
}