D

题目链接[小红的区间查询](https://ac.nowcoder.com/acm/contest/123787/D)

思路

将题目所给式子进行化简后可以得到x = b + (b-a)/(k-1) ;
开一个set存答案并去重
将b-a因式分解,对于其每个因子r,若x = b + (b-a)/r[l,r]内,将x塞入set内
最后输出set的大小即可,时间复杂度 T * sqrt(b-a) * log ans (理论上是可能TLE的,但实际上没有)

代码

//
// Created by Dan on 2025/10/14.
//
#include <bits/stdc++.h>


//#pragma GCC optimize(2)
using namespace std;

#define ull unsigned long long
#define PII pair<long long ,long long >
#define PIII pair<int, pair<int,int>>
#define pll pair<long long,long long>
#define f1n(x, n) for (int x = 1; x <= n; ++x)
#define fff(x, s, n) for (int x = s; x <= n; ++x)
#define f0n(x, n) for (int x = 0; x < n; ++x)
#define fn0(x, n) for(int x = n-1; x>=0; x--)
#define fn1(x, n) for(int x = n; x>0; x--)
#define double long double
//#define vector deque
#define vi vector<int>
#define LL long long
#define ll long long
#define int long long
#define vl vector<int>
#define vd vector<double>
#define vvl vector<vector<int>>
#define vvvl vector<vector<vector<int>>>
#define vv(type) vector<vector<type>>
#define vp vector<pair<ll,ll>>
#define nvvl(n, m) vector<vector<int>>(n,vector<int>(m,0))
#define nvvvl(n, m, t) vector<vector<vector<int>>>(n,vector<vector<int>>(m,vector<int>(t)))
#define nvvlt(n, m, t) vector<vector<t>>(n,vector<t>(m,0))
#define nvvlv(n, m, v) vector<vector<int>>(n,vector<int>(m,v))
int mod = 998244353;
const int inf = 1e18;
//#define endl '\n'

void init() {

}


void solve() {
    int a, b, l, r;
    cin >> a >> b >> l >> r;
    int p = b - a;
    set<int> st;
    for (int i = 1; i * i <= p; ++i) {
        if (p % i == 0) {
            int x = b + p / i;
            if (l <= x && x <= r)
                st.insert(x);
            x = b + i;
            if (l <= x && x <= r)
                st.insert(x);
        }
    }
    cout << st.size() << endl;
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    cin >> t;

    init();
    while (t--) {
        solve();
    }
}