非正常题解
2026-10-04 22:03:40
发布于:广东
2阅读
0回复
0点赞
本文内容过于复杂,初学者请看别人的犹如核弹打苍蝇一般
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k,a[25];
map<ll,ll>mp;
ll lowbit(ll x){return x&(-x);}
bool ck(ll n){
if(n<2)return 0;
for(ll i=2;i<=n/i;i++)
if(n%i==0)return 0;
return 1;
}
ll cou(ll n){
ll sum=0;
while(n){
n-=lowbit(n);sum++;
}return sum;
}
int main(){
cin>>n>>k;
ll ss=1;
for(ll i=1;i<=n;i++){
cin>>a[i];
mp[ss]=a[i];
ss<<=1;
}
ll mask=(1<<n)-1;
ll sum=0,coo=0;
for(ll i=1;i<=mask;i++){
if(cou(i)==k){
sum=0;
for(ll j=i;j;j-=lowbit(j)){
ll low=lowbit(j);
sum+=mp[low];
}
if(ck(sum))coo++;
}
}cout<<coo;
return 0;
}
明天再搞注释
这里空空如也







有帮助,赞一个