社区讨论
求昨晚 CF 的 B 的 hack
灌水区参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lqiqxo3o
- 此快照首次捕获于
- 2023/12/24 08:23 2 年前
- 此快照最后确认于
- 2023/12/24 11:11 2 年前
虽然知道正解是
CPPset,但是一直不知道自己的代码怎么 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;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...