提交时间:2024-08-20 17:29:02
运行 ID: 169842
#include<bits/stdc++.h> using namespace std; unsigned long long n, s, t, f[55][55]; const int Max = 50; long long c1(long long num) { int len, a[Max]; for(len = 0;num > 0;num /= 2) a[len++] = num % 2; long long ans = 0; for(int i = 0, cnt = 0;i < len && cnt < n;i++) { if(a[len - i - 1] == 1) { ans += f[len - i - 1][n - cnt]; cnt++; } } return ans; } int main() { cin >> n >> s >> t; for(int i = 0;i < Max;i++) f[i][0] = f[0][i] = 1; for(int i = 1;i < Max;i++) for(int j = 1;j < Max;j++) f[i][j] = f[i-1][j] + f[i-1][j-1]; cout << c1(t) - c1(s - 1) << endl; return 0; }