一定要考虑边界情况!!
贴出Hack数据:
输入:
0
1
输出:
1
注意 n=0 时输入不应含有正号或 x
100分unAC代码:
#include <bits/stdc++.h>
using namespace std;
int a[105];
int main(){
int n;
bool flag=0;
cin>>n;
n++;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]!=0){
flag=1;
}
}
if(!flag){
cout<<0;
return 0;
}
int k=n-1;
bool z=1;
for(int i=0;i<n;i++){
if(a[i]!=0)z=0;
if(z==1)continue;
if(i==0){
if(a[i]==-1){
cout<<"-";
}else{
if(a[i]!=1){
cout<<a[i];
}
}
}else{
if(i==n-1){
if(a[i]==0)return 0;
if(a[i]>0){
cout<<"+"<<a[i];
}else{
cout<<a[i];
}
}else{
if(a[i]==0){
k--;
continue;
}else{
if(a[i]==-1){
cout<<"-";
}else{
if(a[i]==1){
cout<<"+";
}else{
if(a[i]>0){
cout<<"+"<<a[i];
}else{
cout<<a[i];
}
}
}
}
}
}
if(k>1){
cout<<"x^"<<k;
}else{
if(k==1){
cout<<"x";
}
}
k--;
}
return 0;
}
写了很多判断但 n=0 时有问题(即使有很多特判也无济于事)
AC代码:
加了一个Hack特判就AC了
记住,一定要考虑边界情况!!