列表

详情


JD13. 疯狂序列

描述

东东从京京那里了解到有一个无限长的数字序列: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, ...(数字k在该序列中正好出现k次)。东东想知道这个数字序列的第n项是多少,你能帮帮他么

输入描述

输入包括一个整数n(1 ≤ n ≤ 10^18)

输出描述

输出一个整数,即数字序列的第n项

示例1

输入:

169

输出:

18

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2019-04-06

#include<stdio.h>
#include<math.h>
int main()
{
   long long int n,m;
    scanf("%lld",&n);
    m=ceil((sqrt(1+8*n)-1)/2);
    printf("%lld",m);
    return 0;
}

C++14 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-04-29

#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
  
int main(){
    long long  n;
    while(scanf("%lld",&n) != EOF){
        n = n * 2;
        long long  m = sqrt(n) + 2;
        while(n > m * (m - 1) || n <= (m - 2) * (m - 1))m--;
        printf("%d\n",m - 1);
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-03-26

#include<stdio.h>
#include<math.h>
int main()
{
   long long int n,m;
    scanf("%lld",&n);
    m=ceil((sqrt(1+8*n)-1)/2);
    printf("%lld",m);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-02-24

#include<stdio.h>
#include<math.h>
int main()
{
   long long int n,m;
    scanf("%lld",&n);
    m=ceil((sqrt(1+8*n)-1)/2);
    printf("%lld",m);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2019-07-17

#include<stdio.h>
#include<math.h>
int main()
{
   long long int n,m;
    scanf("%lld",&n);
    m=ceil((sqrt(1+8*n)-1)/2);
    printf("%lld",m);
    return 0;
}

上一题