首页 > 试题广场 > 数字序列第n位的值
[编程题]数字序列第n位的值
有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。。。(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少

输入描述:
输入为一个整数n


输出描述:
输出一个整数,即第n项的值
示例1

输入

4

输出

3

备注:
如:输入为3,有序数列第3项的值为2,则输出为2
Java解答
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int i = input.nextInt();
        int n = 1;
        while(i>0){
            i = i-n;
            n++;
        }
        System.out.println(n-1);
    }
}

编辑于 2019-08-02 19:47:48 回复(0)
#include<iostream>
using namespace std;
int main(){
    int n, i = 1, count = 1;
    cin >> n;
    while(count < n){
       i++;                     //i相当于层数,可想象成杨辉三角那种形状
       count += i;
    }
    cout << i << endl;
    return 0;
}
发表于 2019-08-01 09:09:41 回复(0)
"""
有规律的序列问题
"""
import sys
import math

if __name__ == "__main__":
    # sys.stdin = open("input.txt", "r")
    n = int(input().strip())
    t = int(math.sqrt(2 * n))
    while t * (t + 1) >> 1 < n:
        t += 1
    print(t)

发表于 2019-07-10 13:24:03 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bf.readLine());
        //dp[i]表示数字为i一共有多少个数字
        int[] dp = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            dp[i] = dp[i - 1] + i;
            if (dp[i] >= n) {
                System.out.println(i);
                return;
            }
        }
    }
}
发表于 2019-08-05 19:13:33 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 1; ; i++) {
            if (n <= i * (i + 1) / 2) {
                System.out.println(i);
                break;
            }
        }
    }
}
发表于 2019-07-02 15:18:03 回复(0)
#include<iostream>
using namespace std;
int main()
{
    int n,i=1;
    cin>>n;
    while((n -= i ++) > 0);
    cout<<i-1<<endl;
    return 0;
}

发表于 2019-07-02 10:56:56 回复(0)
#include <stdio.h>
int main(){
    int n,i=0;
    scanf("%d",&n);
    while(n>((i+1)*i)/2)
        i++;
    printf("%d\n",i);
    return 0;
}

发表于 2018-11-18 12:18:23 回复(0)
够短吗?

#include <stdio.h>
int main(void){
    int n, i = 1;
    scanf("%d", &n);
    while( (n -= i ++) > 0 );
    printf("%d",i-1);
    return 0;
}

编辑于 2018-11-14 20:07:45 回复(0)

import java.util.;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
int key=(int) Math.sqrt(n);
int i=0;
for (i = key;i
(i+1)<2*n ; i++);
System.out.print(i);
}
}

发表于 2019-07-06 16:25:49 回复(0)
N<-readLines("stdin")
N <- as.numeric(N)
k<-rep(1:1000,1:1000)
cat(k[N])
R语言,把写出500500位数列,测试通过
发表于 2019-08-22 22:17:16 回复(0)
#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int main()
{
    int n,m = 1;
    cin>>n;
    while(m)
    {
        long Sm = m*(m+1)/2;
        if(Sm >= n)
        {
            cout<<m;
            break;
        }
            
        m++;
    }
    
    
    return 0;
}

发表于 2019-08-21 11:09:25 回复(0)
#include <iostream>
using namespace std;
int main()
{
    int n,count=0;
    int i=1;
    cin>>n;
    for(i;count<n;i++)
        count+=i;
    cout<<i-1;
}
发表于 2019-08-16 17:47:43 回复(0)
#include <iostream>
usingnamespacestd;
 
intmain()
{
    intn,i;
    cin>>n;
     
    for( i=1;n>i;i++)
    {
        n-=i;
    }
    cout<<i<<endl;
}
发表于 2019-08-16 16:27:39 回复(0)
n = int(input())
# 第n项是自然数k,自然数k的下标范围是(1+k)k/2-k+1~(1+k)k/2
# n位于下标范围内时,第n项的值即等于k
i = 1
if i == n:
    print(i)
else:
    while i <= n:
        k = (1+i)*i//2
        if n >= k-i+1 and n <=k:
            print(i)
            break
        else:
            i+=1
发表于 2019-08-12 21:57:47 回复(0)
'''
考虑斐波那契数列
第n个数,就是不大于n的斐波那契数列和的后一个数'''

import sys
if __name__=='__main__':
    n = int(input())
    i = 1
    res = 0
    while res < n:
        res += i
        i +=1
    print(i-1)

发表于 2019-08-09 21:21:37 回复(0)
#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int sum=0;
    int i=0;
    while(sum<=n)
    {
      i++;sum+=i;
    }
    sum=sum-i;
    i--;
    if(sum==n)
    {
       cout<<i<<endl;   
    }else{
        cout<<i+1<<endl;
    }
     return 0;
}

发表于 2019-08-05 15:27:27 回复(0)
num = int(input())
n = 1
while (n*(n+1)//2)<num:
    n += 1
print(n)
发表于 2019-08-03 00:28:04 回复(0)
太水了把 想测测复杂度结果A了
s = int(input())
re = 1
while(s):
    s-=re
    if s<=0:
        break
    re+=1
print(re)

发表于 2019-08-02 15:56:00 回复(0)
#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int i=1;
    while(n>0){
       n=n-i;
       i++;
    }
       
   cout<<i-1<<endl;
}
发表于 2019-07-29 16:48:25 回复(0)
a=int(input())
k=[]
num=0
for i in range(1,a+1):
    for j in range(i):
        k.append(i)
        num+=1
        if num==a:
            print(i)

发表于 2019-07-19 17:23:08 回复(0)