站外题,求助
  • 板块学术版
  • 楼主thrX
  • 当前回复20
  • 已保存回复20
  • 发布时间2024/9/24 16:28
  • 上次更新2024/9/24 20:01:16
查看原帖
站外题,求助
710862
thrX楼主2024/9/24 16:28

题面:

给定正整数 ? (n<=200) ,计算 ? 个元素的集合 {1,2, ⋯ , ?},所有非空子集和的乘积取模 998 244 353
后的结果

EXAMPLES

1

IN

3

OUT

2160

解释

例如 3 个元素的集合有 7 个非空子集,分别为

{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}

对子集内元素求和再乘积的结果就是

1 × 2 × 3 × (1 + 2) × (1 + 3) × (2 + 3) × (1 + 2 + 3) = 2160


2

IN

11

OUT

548236960


3

IN

40

OUT

133045141


4

IN

150

OUT

267526432


求助!不知道怎么做!

附我的代码(60pts)

#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int mod=998244353;
int n;
unsigned long long sum=1;
vector<int> y;//存储所有子集和 
int main(){
    
//    freopen("set.in","r",stdin);
//    freopen("set.out","w",stdout);
    cin>>n;
    y.push_back(1);
    for(int i=2;i<=n;i++){
        y.push_back(i);
        sum*=i;
        sum%=mod;
        int sz=y.size()-1;
        for(int j=0;j<sz;j++){
            y.push_back(y[j]+i);
            sum*=y[j]+i;
            sum%=mod;
        }
    }
    cout<<sum%mod;
    
    return 0;
}
2024/9/24 16:28
加载中...