题目:3418. 杨辉三角形
我也不会写这题,只会暴力,但是会超时,附上大佬的解题思路
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n;
LL cu(LL a,int b){
LL res=1;
for(LL i=a,j=1;j<=b;j++,i--){
res=res*i/j;
if(res>n) break;
}
return res;
}
bool check(int k){
LL l=2*k;
LL r=max(l,n);
while(l<r){
LL mid=l+r>>1;
if(cu(mid,k)>=n) r=mid;
else l=mid+1;
}
if(cu(r,k)!=n) return 0;
printf("%lld",1ll*(r+1)*r/2+k+1);
return 1;
}
int main(){
scanf("%lld",&n);
for(int i=17;i>=0;i--){
if(check(i)) break;
}
return 0;
}