这道题是关于排列组合的基础题目,当然也就是动态规划。 /* ID: wangqia6 TASK: kimbits LANG: C++ */ #include <fstream> using namespace std; const long NMAX = 35; ifstream fin ("kimbits.in"); ofstream fout ("kimbits.out"); unsigned long i,j,n,th,lft,c[NMAX][NMAX],sum; int main() { fin >> n >> lft >> th; for (i = 0; i < n; i++) { c[i][0] = 1; c[i][i] = 1; for (j = 1; j < i; j++) c[i][j] = c[i - 1][j] + c[i - 1][j - 1]; } for (i = n; i > 0; i--) { sum = 0; for (j = 0; j <= lft; j++) sum +=c[i - 1][j]; if (th <= sum) fout << 0; else { fout << 1; lft--; th -= sum; } } fout << endl; fin.close(); fout.close(); return 0; }