比赛 NOIP2023模拟赛1 评测结果 AAAEEEEEEE
题目名称 博士的密码 最终得分 30
用户昵称 黄天乐 运行时间 1.203 s
代码语言 C++ 内存使用 4.12 MiB
提交时间 2023-11-13 11:14:08
显示代码纯文本
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int n,key,ans;
int a[45];
int b[45];
string s[1605];
void jin(int a,int i){
    while(a!=0){
        s[i]+=('0'+a%2);
        a/=2;
    }
}
int main(){
    freopen("password1.in","r",stdin);
    freopen("password1.out","w",stdout);
    cin>>n>>key;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=0;i<=pow(2,n)-1;i++){
        jin(i,i);
        int l=s[i].length();
        if(l<n){
            for(int t=1;t<=n-l;t++){
                s[i]+='0';
            }
        }
        reverse(s[i].begin(),s[i].end());
    }
    for(int i=0;i<=pow(2,n)-1;i++){
        int sum=0;
        for(int j=1;j<=n;j++){
            sum+=(s[i][j-1]-'0')*a[j]; 
        }
        if(sum==key)ans++;
    }
    cout<<ans<<endl;
    return 0;
}