京东 疯狂队列 5行AC

/*解题思路:
 *经分析,该数组中的元素个数分布为等差数列
 *第一个元素1为个数为1,第二个元素2的个数为2,....
 *因此,通过使用等差数列就可以得到:n*a1 + n *(n-1)/2 = m;其中m可看作数组的下标,从1开始
 *因为第一个元素个数为1,即a1 = 1;所以(n^2 + n)/2 = m
 *即(n+1)*n = 2 * m;
 *当对输入的位置开方,得到的小数进行四舍五入,即可得到所得结果
 */

#include <bits/stdc++.h>
using namespace std;

int main(){
    double i;
    while (cin >> i){
        double j = sqrt(i * 2);
        int n = round(j);
        cout << n << endl;
    }
    return 0;
}

全部评论
一行搞定 std::cout << ll(sqrt(2.0 * n - 1.25) + 0.5) << std::endl;
点赞 回复 分享
发布于 2017-09-08 22:46
..为啥我是50????
点赞 回复 分享
发布于 2017-09-08 22:25

相关推荐

海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务