Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
140028 | 梁乃元 | 二进制计数游戏 | C++ | 通过 | 100 | 0 MS | 276 KB | 731 | 2024-03-28 13:25:50 |
#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 ; }