jd 疯狂数列 10行KO

#include<iostream>
#include<cmath>
using namespace std;
int main(int argc,char* argv[]){
     int n;
     cin>>n;
     int tmp = sqrt(2*n);
     int low = tmp* (tmp -1) /2, high = low + tmp; //边界情况
     while(n <= low || n > high){
        if(n > high)  ++tmp;
        else  --tmp;
        low = tmp* (tmp -1) /2;
        high = low + tmp;
     }
     cout<<tmp;
	return 0;
}

全部评论
#include<iostream> #include<cmath> using namespace std; int main(){      long long n;      cin>>n;      long long res = (long long)(sqrt(2*n) + 0.5);      cout<<res;     return 0; }
点赞 回复 分享
发布于 2017-09-08 21:37
#include <cstdio> #include <cmath> #include <algorithm> int main() { long long n; while (scanf("%lld", &n) != EOF) { long long delta = 8 * n + 1; double sqrt_delta = (sqrt(delta) - 1)/2; long long ans = sqrt_delta; if (std::abs(ans - sqrt_delta) < 1e-10) printf("%lld\n", ans); else printf("%lld\n", ans + 1); } return 0; }
点赞 回复 分享
发布于 2017-09-08 21:32
from math import sqrt N = int(input()) def findK(N) : sqrt_N = int(sqrt(N * 2)) while True: if (sqrt_N * (sqrt_N + 1)) / 2 < N: sqrt_N += 1 else: break return sqrt_N print(findK(N))
点赞 回复 分享
发布于 2017-09-08 21:34
开根号加判断就出来了。 直接输出开根号的值就能够80%。
点赞 回复 分享
发布于 2017-09-08 21:34
static_cast<int> (sqrt(2) * sqrt(n) +0.5)
点赞 回复 分享
发布于 2017-09-08 21:37

相关推荐

什么时候才能有offer啊_:十年前我还在刺激战场研究跳伞的底层原理呢
投递牛客等公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务