蓝桥杯 二进制问题

简介: 蓝桥杯 二进制问题
#include<bits/stdc++.h>
using namespace std;
vector<int> a(70);
long long N, K;
vector<vector<vector<long long>>> dp(70, vector<vector<long long>>(70, vector<long long>(2, -1)));
long long dfs(int pos, long long count, int num, int limit)
{
    if (pos == -1)
    {
        return count == K;
    }
    if (!limit && dp[pos][count][num] != -1)
    {
        return dp[pos][count][num];
    }
    int upper = limit ? a[pos] : 1;
    long long res = 0;
    for (int i = 0; i <= upper; i++)
    {
        res += dfs(pos - 1, count + (i == 1), i, limit && i == upper);
    }
    if (!limit)
    {
        dp[pos][count][num] = res;
    }
    return res;
}
long long solve(long long x)
{
    int pos = 0;
    while (x)
    {
        a[pos++] = x & 1;
        x >>= 1;
    }
    return dfs(pos - 1, 0, 0, 1);
}
int main()
{
    cin >> N >> K;
    cout << solve(N);
    return 0;
}
目录
相关文章
|
机器学习/深度学习
素数环-蓝桥杯
素数环-蓝桥杯
114 0
|
人工智能
为蓝桥杯准备
  1.今天是光棍节。聪明的NS想到了一个活动来丰富这个光棍节。规则如下:每个光棍在一个纸条上写一个自己心仪女生的名字,然后把这些纸条装进一个盒子里,这些光 棍依次抽取一张纸条,如果上面的名字就是自己心仪的女生,那么主持人就在现场给该女生打电话,告诉这个光棍对她的爱慕之情,并让光棍当场表白,并得到现场所有人的祝福,没抽到的,嘿嘿就可以幸免了。
905 0
|
人工智能 C语言
蓝桥杯 ADV_302 秘密行动
蓝桥杯 ADV_302 秘密行动
107 0
蓝桥杯 ADV_302 秘密行动
|
机器学习/深度学习 人工智能
|
机器学习/深度学习 人工智能
蓝桥杯带刷,带刷!!!(一)
蓝桥杯带刷,带刷!!!
105 0

热门文章

最新文章