蓝桥--杨辉三角形

简介: 蓝桥--杨辉三角形

【题目描述】


下面的图形为著名的杨辉三角形

7e4c1263680547a8a2098dd318fc2cc8.png

如果我们按从上到下,从左到右的顺序把所有数排成一列,可以得到如下数列:


1 , 1 , 1 , 1 , 2 , 1 , 1 , 3 , 3 , 1 , 1 , 4 , 6 , 4 , 6 , 1...... 1,1,1,1,2,1,1,3,3,1,1,4,6,4,6,1......1,1,1,1,2,1,1,3,3,1,1,4,6,4,6,1......


给定一个正整数N,求出N第一次出现是在第几个数?

1 < = N < = 109


【输入】


数字n


【输出】


N第一次出现的位置(从1开始计算)


【样例输入】


6


【样例输出】

13


【参考代码】

#include<algorithm>
#include<iostream>
typedef long long ll;
using namespace std;
int N;
ll combine(int n, int m) {
    ll ans = 1;
    for (int i = 0; i < m; i++) {
        ans *= (n - i);
        ans /= (i + 1);
        if (ans > N) {
            return ans;
        }
    }
    return ans;
}
bool f(int k) {
    int l = 2 * k, r = max(N, l);
    while (l < r) {
        int mid = (l + r) >> 1;
        if (combine(mid, k) >= N) {
            r = mid;
        } else {
            l = mid + 1;
        }
    }
    if (combine(r, k) == N) {
        cout << 1ll * (r + 1) * r / 2 + k + 1 << endl;
        return true;
    } else {
        return false;
    }
}
int main() {
    cin >> N;
    if (N == 1) {
        cout << "1" << endl;
    } else {
        for (int i = 17; i > 0; i--) {
            if (f(i)) {
                break;
            }
        }
    }
    return 0;
}


相关文章
|
3月前
|
存储 算法 C++
Leetcode第三十六题(有效的数独)
这篇文章介绍了如何使用C++编写一个算法来验证一个9x9数独是否有效,遵循数独的规则,即数字1-9在每一行、每一列和每个3x3宫内只能出现一次。
55 0
|
3月前
|
机器学习/深度学习 Windows
AcWing 687. 扫雷(每日一题)
AcWing 687. 扫雷(每日一题)
|
7月前
力扣-2029-石子游戏-‘屎山’代码
力扣-2029-石子游戏-‘屎山’代码
55 3
【每日一题】4.LeetCode——杨辉三角
【每日一题】4.LeetCode——杨辉三角
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
《蓝桥杯每日一题》递推·AcWing 3777. 砖块
83 0
LeetCode每日一题(23)——最大三角形面积
最大三角形面积 1.题目 2.示例 3.思路 4.代码 暴力穷举 凸包
121 0
LeetCode每日一题(23)——最大三角形面积
|
机器学习/深度学习 人工智能
【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---排列序数
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 DFS
103 0
|
C++
【寒假每日一题】AcWing 4728. 乘方
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
154 0