Untitled
unknown
plain_text
2 years ago
1.0 kB
18
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