コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MOD = 1e9 + 7; ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; } ll modpow(ll x, ll e) { ll ret = 1; ll cur = x; while (e) { if (e & 1) ret = (ret * cur) % MOD; cur = (cur * cur) % MOD; e >>= 1; } return ret; } int main() { cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; vector<ll> l(N); for (int i = 0; i < N; ++i) cin >> l[i]; sort(l.begin(), l.end()); ll D = l[0]; ll g = l[N - 1] - D; for (int i = 0; i < N; ++i) { if (l[i] - D > 0) g = gcd(g, l[i] - D); } ll a = (g + 1) / 2 + D; cout << modpow(2, a) << endl; }