#define _USE_MATH_DEFINES // M_PI等のフラグ #include #define MOD 1000000007 #define COUNTOF(array) (sizeof(array)/sizeof(array[0])) #define rep(i,n) for (int i = 0; i < (n); ++i) #define intceil(a,b) ((a+(b-1))/(b)) using namespace std; using ll = long long; using pii = pair; using pll = pair; const long long INF = LONG_LONG_MAX - 1001001001001001; void chmax(ll& x, ll y) { x = max(x,y); } void chmin(ll& x, ll y) { x = min(x,y); } string vs = "URDL"; // 上右下左 vector vy = { -1, 0, 1, 0 }; vector vx = { 0, 1, 0, -1 }; void solve() { ll N, L, H; cin >> N >> L >> H; vector C(N); for(ll i=0; i> C[i]; // n(c0 ∪ c1 ∪ c2 ∪ ...) を求める ll all = 0; for(ll bit=1; bit<(1<>d&1) { div = lcm(div, C[d]); } } ll cntH = H/div; ll cntL = (L-1LL)/div; if (popcnt%2 == 0) all -= (cntH-cntL); else all += (cntH-cntL); } // n(C[i]以外の和集合)を求めて、C[i]のみで割り切れるものの個数を数え上げる ll ans = 0; for(ll i=0; i>i&1) continue; ll popcnt = __builtin_popcountll(bit); ll div = 1; for(ll d=0; d>d&1) { div = lcm(div, C[d]); } } ll cntH = H/div; ll cntL = (L-1LL)/div; if (popcnt%2 == 0) res -= (cntH-cntL); else res += (cntH-cntL); } ans += all-res; } cout << ans << endl; } int main() { solve(); return 0; }