样例过了但WA,求hack
查看原帖
样例过了但WA,求hack
1112010
Ethan812820楼主2024/6/15 17:31

记录

#include<bits/stdc++.h>
using namespace std;//1
#define int long long
int a[200005],b[200005];
int gcd(int x,int y){
	int t;
	while(x%y!=0){
		t=x%y;
		x=y;
		y=t;
	}
	return y;
}
signed main(){
	int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        for(int i=1;i<n;i++){
            b[i]=gcd(a[i],a[i+1]);
        }    
        bool f=0;
        int l,r;
        int n1=n-1;
        for(int i=1;i<n1;i++){
            if(b[i]>b[i+1]){
                if(f==0){
                    f=1;
                    l=i;
                }
                r=i+1;
            }
        }
        //cout<<endl;
        //for(int i=1;i<=n1;i++) cout<<b[i]<<" ";
        //cout<<endl<<l<<" "<<r;
        if(r-l+1>3){
            if(r-l==3){
                int x=r-1;
                if(((x>2&&x<n)?b[x-2]<=gcd(a[x-1],a[x+1]):1)&&((x>1&&x<n-1)?gcd(a[x-1],a[x+1])<=b[x+1]:1)){//如果删x是否符合要求
                    cout<<"YES\n";
                    continue;
                }
            }
            cout<<"NO\n";
            continue;
        }
        if(f==0){
            cout<<"YES\n";
            continue;
        }
        f=0;
        for(int x=(r-l==1?l:l+1);x<=(r-l==1?r+1:r);x++){
            if(((x>2&&x<n)?b[x-2]<=gcd(a[x-1],a[x+1]):1)&&((x>1&&x<n-1)?gcd(a[x-1],a[x+1])<=b[x+1]:1)){//如果删x是否符合要求
                cout<<"YES\n";
                f=1;
                break;
            }
        }        
        if(f==0){
            cout<<"NO\n";
        }    
    }        
	return 0;
}
2024/6/15 17:31
加载中...