1. 程式人生 > 其它 >藍橋杯 《楊輝三角形》

藍橋杯 《楊輝三角形》

題目描述

下面的圖形是著名的楊輝三角形:

如果我們按從上到下、從左到右的順序把所有數排成一列,可以得到如下數列: 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; }