题目
题意: 杨辉三角。输入n,求在杨辉三角中第一次出现这个数是在第几个位置。(n = 2k.
C2k k >= 1e9的就不用考虑了,超出数据范围了。所以只需要看前16个斜行。
从最后一个斜行开始二分查找即可。(因为不同斜行在同一行的值是递增的,所以最后一个斜行找到的n左边的数都=n) r = mid;
else l = mid+1;
}
if(C(l,k)==n)
{
int dx = l - 2*k;
int m = dx + 2*k+1;
ll ans = 1ll*m*(m-1)/2;
ans += k+1;
coutn;
if(n==1)
{
cout
关注
打赏
