Untitled

 avatar
unknown
plain_text
a year ago
1.0 kB
10
Indexable
#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define int long long
#define all(vec) vec.begin(), vec.end()
ll lcm(ll i ,ll j) {
   return (i * j)/ __gcd(i , j);
}
int dp[60][100001];
int l, r;
int mem(int sm,int lc) {
    if (sm == 0) {
        return 1;
    }
    if (sm < 0) {
        return 0;
    }
    auto &ret = dp[sm][lc];
    if (~ret)return ret;
    ret = 0;
    for (int i = 1; i <= sm; ++i) {
        if (lc == 1) {
            ret += mem(sm - i, lcm(lc, i));
        } else if (__gcd(lc, i) == 1)ret += mem(sm - i, lcm(lc, i));
    }


    return ret;
}

void solve() {
    cin >> l >> r;
    int ans = 0;
    for (int i = l; i <= r; i++) {
        ans += mem(i, 1);
    }
    cout << ans;
}

signed main() {
    ios_base::sync_with_stdio(false),
            cin.tie(nullptr), cout.tie(nullptr);
    ll t = 1;
    cin >> t;
    memset(dp, -1, sizeof dp);
    while (t--) {
        solve();
        cout << '\n';
    }
}
Editor is loading...
Leave a Comment