求昨晚 CF 的 B 的 hack
  • 板块灌水区
  • 楼主CheZiHe929
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/24 08:22
  • 上次更新2023/12/24 11:11:23
查看原帖
求昨晚 CF 的 B 的 hack
920809
CheZiHe929楼主2023/12/24 08:22

虽然知道正解是 set,但是一直不知道自己的代码怎么 hack。

#include<bits/stdc++.h>
#define int unsigned long long
#define endl '\n'

int T;
int n;
int a[100005];

signed main(){
//	std::ios::sync_with_stdio(false);
//	std::cin.tie(0);

	std::cin>>T;
	
	while(T--){
		memset(a,0,sizeof(a));
		bool fj=0,fo=0;
  		std::cin>>n;
		
		for(int i=1;i<=n;i++){
   			std::cin>>a[i];
			if(a[i]%2==1)fj=1;
			else fo=1;
			
		}

		if(fj&&fo)std::cout<<2<<endl;
		else{
			fj=0,fo=0;
			int g=a[1];
			for(int i=1;i<=n;i++)g=std::__gcd(g,a[i]);
			for(int i=1;i<=n;i++){
				a[i]/=g;
				if(a[i]%2==1)fj=1;
				else fo=1;
			}
			
			if(fj&&fo)std::cout<<2*g<<endl;
			else if(fo&&!fj){//全偶
				int gg=-1;
				for(int i=1;i<=n;i++){
					a[i]-=2;
					if(gg==-1&&a[i]!=0)gg=a[i];
					else if(a[i]==0)continue;
					else gg=std::__gcd(gg,a[i]);
				}
				std::cout<<g*gg*2<<endl;
			}
			else{//全奇
				int gg=-1;
				for(int i=1;i<=n;i++){
					a[i]--;
					if(gg==-1&&a[i]!=0)gg=a[i];
					else if(a[i]==0)continue;
					else gg=std::__gcd(gg,a[i]);
				}
				std::cout<<gg*g*2<<endl;
			}
		}
	}

	return 0;
}
2023/12/24 08:22
加载中...