include[HTML_REMOVED]
using namespace std;
int n;
long long C(int b,int a){
long long cnt=1;
for(int i=1,j=b;i<=a;j–,i++){
cnt=cnt*j/i;
if(cnt>n)return cnt;
}
return cnt;
}
bool check(int k){
// 二分该斜行,找到大于等于该值的第一个数
// 左边界2k,右边界为max(l, n)取二者最大即可!
int l = 2 * k, r = max(n, l);
while(l < r){
int mid = l + r >> 1;
if(C(mid, k) >= n) r = mid;
else l = mid + 1;
}
if(C(r, k) != n) return false;
// C(r, k)的从0开始的顺序!
cout << 1ll * (r + 1) * r / 2 + k + 1 << endl;
return true;
}
int main(){
cin>>n;
if(n==1)cout<<1;
for(int k=16;k;k–){
if(check(k))break;
}
return 0;
}
兄弟有时间填个邀请码hhhhhhhhh(可以得AC币,邀请码在学生认证那填) 我的邀请码是:GUDFH