1 条题解

  • 0
    @ 2026-10-25 17:53:28

    思路

    无标号非空子集,第二类斯特林递推;n<30仍可能超64位,需精确整数。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    string calc(string a,string b,int k){string c;int carry=0;for(int i=(int)a.size()-1,j=(int)b.size()-1;i>=0||j>=0||carry;i--,j--){carry+=(i>=0?a[i]-'0':0)+k*(j>=0?b[j]-'0':0);c+=char('0'+carry%10);carry/=10;}if(c.empty())return "0";reverse(c.begin(),c.end());return c;}int main(){int n,k;cin>>n>>k;string d[30][30];for(auto &row:d)for(auto &x:row)x="0";d[0][0]="1";for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)d[i][j]=calc(d[i-1][j-1],d[i-1][j],j);cout<<d[n][k]<<'\n';}
    
    • 1

    信息

    ID
    1312
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者