蓝桥杯 《杨辉三角形》
题目描述
下面的图形是著名的杨辉三角形:
如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列: 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1,
给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?
输入描述
输入一个整数 N。
输出描述
输出一个整数代表答案。
输入输出样例
输入 : 6
输出 :13
代码:
#include<bits/stdc++.h> #define int long long//要把int main改为signed main using namespace std; int n; int C(int a , int b){ int res = 1; for(int i = a , j = 1 ; j <= b ; i -- , j ++){ res = res * i / j; if(res > n) return res; } return res; } signed main() { cin >> n; for(int k = 16 ; ~k ; k --){ int l = 2 * k , r = max(n , l) , res = -1; while(l <= r){ int mid = l + r >> 1; if(C(mid , k) >= n) res = mid , r = mid - 1; else l = mid + 1; } if(C(res , k) == n) return cout << (res + 1) * res / 2 + k + 1 << '\n' , 0; } return 0; }
本文来自博客园,作者:弈星,转载请注明原文链接:https://www.cnblogs.com/8023yyl/p/16115771.html

浙公网安备 33010602011771号