下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 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。给出c++代码
时间: 2023-05-24 10:06:50 浏览: 79
数据结构 杨辉三角形
5星 · 资源好评率100%
#include <iostream>
using namespace std;
long long C(int n, int k) {
if (k > n / 2) k = n - k; // 优化
long long res = 1;
for (int i = 0; i < k; i++) {
res *= n - i;
res /= i + 1;
}
return res;
}
int main() {
int n;
cin >> n;
int row = 1;
while (true) {
for (int col = 1; col <= row; col++) {
long long num = C(row - 1, col - 1);
if (num == n) {
cout << (row - 1) * (row - 2) / 2 + col << endl;
return 0;
}
if (num > n) break;
}
row++;
}
return 0;
}
阅读全文