题目描述 下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, \cdots1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯ 给定一个正整数 NN,请你输出数列中第一次出现 NN 是在第几个数? 输入描述 输入一个整数 NN。 输出描述 输出一个整数代表答案。 输入输出样例 示例 1 输入 6 输出 13 评测用例规模与约定 对于 20%20 的评测用例,1\leq N\leq 101≤N≤10; 对于所有评测用例,1\leq N\leq 10000000001≤N≤1000000000。
时间: 2023-05-24 19:06:38 浏览: 315
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著
思路:由于题目规定 N 最大为 10^10,因此不能按照题目给出的方式计算杨辉三角形中出现 N 的位置,否则会超时。但是我们可以利用杨辉三角形的规律,找到一种更快的方法。
首先我们可以观察杨辉三角形的性质,发现第 n 行第 i 个数的值为 C(n-1,i-1),其中 C(n,m) 表示组合数,即从 n 个不同元素中取 m 个元素的组合数。
我们可以利用这个性质,通过二分查找在哪一行出现了 N 这个数。具体地,我们可以先二分查找可能出现 N 的行数 k,然后计算出该行的每个数值,判断 N 是否出现在该行中。如果出现,则记录下该位置在行中出现的下标即可,否则我们需要更新二分查找的上下界。
时间复杂度:O(logN * logN)
参考代码:
阅读全文