#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,l,i,C[32][32],sum[32][32],a[32];
void dfs(int l,int c,int k){
if(!l) {
for(int i=n;i;--i) cout<<a[i];
cout<<'\n'; exit(0);
}
if(k<=sum[l-1][c]) return dfs(l-1,c,k);
else return k-=sum[l-1][c],a[l]=1,dfs(l-1,c-1,k);
}
main(){
for(int i=0;i<32;++i){
C[i][0]=1,sum[i][0]=1;
for(int j=1;j<=i;++j){
C[i][j]=C[i-1][j]+C[i-1][j-1];
sum[i][j]=sum[i][j-1]+C[i][j];
}
}
cin>>n>>l>>i;
dfs(n,l,i);
}
求助:为何下面代码是对的,上面 sum 求法,就是错误的