藍橋杯 《楊輝三角形》
阿新 • • 發佈:2022-04-08
題目描述
下面的圖形是著名的楊輝三角形:
如果我們按從上到下、從左到右的順序把所有數排成一列,可以得到如下數列: 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; intC(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; }