怒斥CCF
查看原帖
怒斥CCF
1530149
zzh_we_love_you楼主2024/11/24 11:47
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
int n,m,k;
__int128 ans;
int v[105];
vector<int>path;
void print(__int128 x){
    if(x==0)return;
    print(x/10);
    cout<<(int)x%10;
}
__int128 p(int k){
    __int128 x=1;
	for(int i=1;i<=k;i++){
    	x*=2;
    }
    return x;
}
__int128 c;
__int128 solve(){
	__int128 s=1;
    for(int i=0;i<n;i++){
        s*=v[path[i]];
        s%=mod;
    }
    return s;
}
void dfs(__int128 x,int t){
    if(t>n){
    	if(c!=x)return;
        ans+=solve();
        ans%=mod;
        return;
    }
	for(int i=0;i<=m;i++){
    	path.push_back(i);
        __int128 tmp=p(i);
        c+=tmp;
        dfs(x,t+1);
        path.pop_back();
        c-=tmp;
    }
}

int check(__int128 x){
	int cnt=0;
    while(x){
        if(x%2==1)cnt++;
        x/=2;
    }
    return cnt;
}
int main(){
    cin>>n>>m>>k;
    for(int i=0;i<=m;i++){
    	cin>>v[i];
    }
    for(__int128 i=n;i<=p(m)*n;i++){
    	if(check(i)<=k){
			dfs(i,1);
            ans%=mod;
        }
    }
    print(ans);
    return 0;
}

CCF什么破数据,就不能给几个样例1这样的小数据吗,害得我的唐氏暴力一分都没有

2024/11/24 11:47
加载中...