蓝桥杯--杨辉三角形
蓝桥杯--杨辉三角形
核心:求组合数的方法,找规律
https://www.acwing.com/problem/content/3421/
#include
#include
#include
using namespace std;
typedef long long LL;
LL n;
LL C(int a,int b){
LL res=1;
for(int i=a,j=1;j<=b;j++,i--){
res=res* i/j;
if(res>n) return res;
}
return res;
}
bool check(int k){
LL l=2*k;
LL r=max(n,l);
while(l>1;
//mid行 k列 ,求>=n的第一个值
if(C(mid,k) >=n) r=mid;
else l=mid+1;
}
if(C(r,k)!=n) return false;
cout << r *(r+1) /2 +k+1; //坐标(r,k)前面有r行,有k列,是第 r *(r+1) /2 +k+1个
return true;
}
int main()
{
cin>>n;
for(int i=16;;i--){
if(check(i)) break;
}
return 0;
}