YDOI R1T1 Running题解
System_Error_ · · 题解
subtask 1:
超市只有
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a;
int n;
int main() {
cin>>n>>a;
if(a%2==0) cout<<a/2;
else cout<<-1;
return 0;
}
subtask 2:
显而易见,
代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[55];
signed main() {
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=a[1]; i>=1; i--) {
bool f=true;
for(int j=1; j<=n; j++)
if(a[j]%i||a[j]/i%2) f=false;
if(f) {
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}
subtask 3:
在枚举
代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[10005],ans=-1;
bool check(int x) {
for(int i=1; i<=n; i++)
if(a[i]%x||a[i]/x%2) return false;
return true;
}
signed main() {
cin>>n;
for(int i=1; i<=n; i++) cin>>a[i];
for(int i=sqrt(a[1]); i>=1; i--) {
if(a[1]%i==0) {
if(check(i)) ans=max(ans,i);
if(check(a[1]/i)) ans=max(ans,a[1]/i);
}
}
cout<<ans;
return 0;
}
subtask 4:
我们先不管必须在偶数时间经过这个条件,要求出一个
求出
接着再看偶数时间经过这个条件,把
相信聪明的你一定看得懂简单的代码。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e6+5;
int n,a[N];
signed main() {
cin>>n;
for(int i=1; i<=n; i++)
cin>>a[i];
int v=a[1];
for(int i=2; i<=n; i++)
v=__gcd(v,a[i]);
if(v%2==1) cout<<-1;
else cout<<v/2;
return 0;
}