按照紫书的思路推断出状态转移方程,然后“打表”,查询结果即可,具体实现见如下代码:
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
using namespace std;
typedef long long LL;
LL k, n;
LL test[110][110];
int main(){
memset(test,0,sizeof(test));
for (int i = 1; i <= 110; i++){
for (int j = 1; j <= 64; j++){
test[i][j] = test[i][j - 1] + test[i - 1][j - 1] + 1;
}
}
while (cin >> k >> n&&k&&n){
int res = lower_bound(test[k], test[k] + 64, n) - test[k];
if (res > 63){
cout <<"More than 63 trials needed."<< endl;
}
else{
cout <<res<< endl;
}
}
return 0;
}