比赛 NOIP水题争霸赛 评测结果 RRRRRRRRRR
题目名称 博士的密码 最终得分 0
用户昵称 lingfeng123 运行时间 0.153 s
代码语言 C++ 内存使用 0.19 MiB
提交时间 2018-02-11 19:58:25
显示代码纯文本
#include <map>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const long long maxn=100,maxm=4e6+10,maxk=1e5+10,MOD=1e5+3;
map<int,int>isvis;
long long a[maxn];
long long n,key,mid,tot=0;
long long ans=0;
int main()
{
	freopen("password1.in","w",stdin);
	freopen("paccword1.out","r",stdout);
    long long i,j,k,l,r,tmp;
    cin>>n>>key;
    mid=(1+n)>>1;
	l=mid;
	r=n-l;
    for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
    for(k=0;k<(1<<l);k++)
    {
        tmp=0;
        for(i=0;i<l;i++){
			if(k&(1<<i))
			{
				tmp+=a[i+1];
			}
		}
        isvis[tmp]++;
    }
    for(k=0;k<(1<<r);k++)
    {
        tmp=0;
        for(i=0;i<r;i++)
		{
			if(k&(1<<i))
			{
				tmp+=a[l+i+1];
			}
		}
        ans+=isvis[key-tmp];
    }
    cout<<ans;
    return 0;
}