本题题解
#include<bits/stdc++.h> using namespace std; //1000,000,000+5就不超时 //1500,000,000+5就超时了,只AC0.9,只能让我在这个基础上弄个个数学吧不等式求解 const int maxn=1500000000+5; void solve(long long n) { long long left; for(long long i=1;i<maxn;++i) { long long temp=i*(i+1)/2; if(temp>=n) { left=i; break; } } printf("%lld\n",left); } int main() { long long n; while(~scanf("%lld",&n)) { long long out=ceil( (sqrt(1+8*n)-1)/2 ); printf("%lld\n",out); } return 0; }
公式由来,找到Sout>=n的位置
n*(n+1)/2>=n