首页 > 试题广场 >

疯狂序列

[编程题]疯狂序列
  • 热度指数:173 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
东东从京京那里了解到有一个无限长的数字序列: 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
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main(){
    long long k = 0;
    cin >> k;
    cout << fixed << setprecision(0) << ceil((sqrt(1+8*k)-1)/2);
    return 0;
}
编辑于 2018-09-20 11:10:59 回复(0)
importjava.util.Scanner;
 
publicclassMain {
    publicstaticvoidmain(String args[]) {
        Scanner  scanner = newScanner(System.in);
        longn = scanner.nextLong();
        longcount = 0;
        for(inti = 1; i< n; i++){
            
                count = count +1*i;
                if(count -i <  n  && n <= count){
                    System.out.print(i);
                    break;
                }
             
 
        }
    }
}
发表于 2018-08-12 20:01:53 回复(0)
import math
n = int(input())
m = int(math.sqrt(2*n))
if m*m+m>=2*n:
    if m*m-m<2*n:
        print(m)
    else:
        print(m-1)
else:
    print(m+1)

发表于 2018-06-14 22:50:21 回复(0)
importjava.util.Scanner;
 
publicclassMain {
 
    publicstaticvoidmain(String[] args) {
        Scanner sc = newScanner(System.in);
        longnum = sc.nextLong();
        longsum = 0;
        inti = 0;
        while(sum < num){
            i++;
            sum += i;
        }
        System.out.println(i);
    }
}
发表于 2018-06-14 11:32:28 回复(1)