本文主要是介绍2023河南萌新联赛第(四)场:B题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
B-序列的与和_2023河南萌新联赛第(四)场:河南大学 (nowcoder.com)
解法一:
直接按照题意深度搜索即可。
注:所有带 ll 的名字,均为 long long 类型下运算,否则将当作 int 来算
__builtin_popcount()
用法:返回括号内数的二进制表示形式中1的个数
__builtin_ctz()/__builtin_ctzll()
用法:返回括号内数的二进制表示形式中末尾0的个数
__builtin_clz()/__builtin_clzll()
用法:返回括号内数的二进制表示形式中前导0的个数
__builtin_parity()
用法:返回括号内数的二进制表示形式中1的个数的奇偶性(偶:0 奇:1)
__builtin_ffs()
用法:返回括号内数的二进制表示形式中最后一个1在第几位(从后往前)
代码:
#include<bits/stdc++.h>
using namespace std;
int a[1000],n,k,ans=0;
void find(int j,int x)
{if(__builtin_popcount(x)==k)ans++;for(int i=j+1;i<=n;i++)find(i,x&a[i]);
}
int main()
{cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)find(i,a[i]);cout<<ans<<endl;return 0;
}
解法二:
这篇关于2023河南萌新联赛第(四)场:B题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!