解题思路:
参考
https://blog.csdn.net/zy98zy998/article/details/122293334
注意事项:
参考代码:
#include<iostream> using namespace std; typedef long long ll; ll n; ll C(ll q,ll x) { ll ans=1; for(int i=1,j=q-x+1;i<=x;i++,j++) { ans=ans*j/i; if(ans>n) return ans; } return ans; } ll check(ll x) //二分 { ll l=2*x,r=n,q; while(l<=r) { ll mid=l+(r-l)/2; q=C(mid,x); if(q>n) r=mid-1; else if(q<n) l=mid+1; else { cout<<(1+mid)*mid/2+x+1<<endl; return 1; } } return 0; } int main() { cin>>n; for(int i=14;~i;i--) { if(check(i)) break; } return 0; }
0.0分
8 人评分
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:517 |
局部变量作函数返回值的问题浏览:963 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:530 |
简单的a+b (C语言代码)浏览:627 |
简单的a+b (C语言代码)浏览:414 |
C语言训练-最大数问题 (C语言代码)浏览:584 |
小九九 (C++代码)简单粗暴,直接输出浏览:662 |
C语言程序设计教程(第三版)课后习题7.2 (C++代码)浏览:425 |
明明的随机数 (C语言代码)浏览:613 |
Manchester-数字整除最原始易理解方法浏览:4459 |