P10183 [YDOI R1] Running

· · 题解

Content

Z 在一条公路上跑步,公路上有 n 个超市,第 i 个超市的位置为 a_i。小 Z 只能在偶数时间时到达超市。问小 Z 的最大速度 v 是多少。

Solution

这道题就是求出这 n 个数的最大公因数,再将这个最大公因数除以 2 便是答案,但是题目中说了“规定 v 必须是正整数”,所以不会被 2 整除便是无解。

Code

#include<bits/stdc++.h>
using namespace std;
int n;
long long v;
long long a[2000005];
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        v=(i==1?a[i]:__gcd(ans,a[i]));//算出最大公约数 
    }
    cout<<(v%2?-1:v/2);
    return 0;
}