Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180466 | A班匡嘉阳 | 国债计算 | C++ | 无测评数据 | 0 | 0 MS | 0 KB | 647 | 2024-08-21 13:55:11 |
#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; }