提交时间:2024-03-28 13:25:50

运行 ID: 140028

#include <bits/stdc++.h> using namespace std; long long n , s , t ; long long f [65] [65] ; long long cal ( long long x ) { int len , b [65] ; for ( len = 0 ; x > 0 ; x /= 2 ) { b [len ++] = x % 2 ; } long long ans = 0 ; for ( int i = 0 , c = 0 ; i < len && c < n ; i ++ ) { if ( b [len - i - 1] == 1 ) { ans += f [len - i - 1] [n - c] ; c ++ ; } } return ans ; } int main ( ) { cin >> n >> s >> t ; for ( int i = 0 ; i < 65 ; i ++ ) { f [i] [0] = f [0] [i] = 1 ; } for ( int i = 1 ; i < 65 ; i ++ ) { for ( int j = 1 ; j < 65 ; j ++ ) { f [i] [j] = f [i - 1] [j] + f [i - 1] [j - 1] ; } } cout << cal ( t ) - cal ( s - 1 ) << endl ; return 0 ; }