警示后人,警钟敲烂!关于Hack数据
查看原帖
警示后人,警钟敲烂!关于Hack数据
817984
wzq100205楼主2023/9/21 21:41

一定要考虑边界情况!!

贴出Hack数据:

输入:

0
1

输出:

1

注意 n=0n=0 时输入不应含有正号或 xx

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=0n=0 时有问题(即使有很多特判也无济于事)

AC代码:

加了一个Hack特判就AC了

记住,一定要考虑边界情况!!

2023/9/21 21:41
加载中...