解题思路:
参考
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分
9 人评分
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:1314 |
DNA (C语言描述,数据结构)浏览:909 |
三角形 (C++代码)记忆化搜索浏览:1317 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:804 |
Cylinder (C语言描述+详细分析)浏览:3374 |
简单的a+b (C语言代码)浏览:1024 |
C二级辅导-统计字符 (C语言代码)浏览:514 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:725 |