提交时间:2024-08-21 13:55:11

运行 ID: 180466

#include <bits/stdc++.h> using namespace std; long long n,s,t,f[51][51]; const int Max = 50; long long c(long long num){ long long ans = 0,len,a[Max]; for(len = 0;num > 0;num /= 2) a[len++] = num % 2; 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 << c(t) - c(s - 1) << endl; return 0; }