Triángulo de Yang Hui [enumeración + matemáticas + número de combinaciones]
ACwing3418``蓝桥杯第12届省赛
Ideas:
n = int(input())
def C(a,b): #组合数
sum = 1
for i in range(1,b + 1):
sum *= a
sum //= i
a -= 1
if sum > n:
return sum
return sum
def check(kk): # 二分
l = 2 * kk
r = max(l,n)
while l < r:
mid = l + r >> 1
if C(mid,kk) >= n:
r = mid
else:
l = mid + 1
if C(r,kk) == n:
print((r + 1) * r // 2 + kk + 1)
return True
return False
if n == 1: # 特判
print(1)
else:
k = 16
while k > 0: # 枚举
if check(k):
break
k -= 1