Untitled
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