列表

详情


KS8. 数字序列第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

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 276KB, 提交时间: 2020-08-25

#include<stdio.h>
int main(void)
{
    int n,k,i;
    scanf("%d",&n);
    k = (int)pow(n*2,0.5);
    for(i=k-1;i<k+1;){
        if(n>i*(i+1)/2&n<=(i+1)*(i+2)/2) break;
        i++;
    }
    printf("%d",i+1);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2019-11-10

#include<stdio.h>

int main(){
    int n;
    int k;
    scanf("%d",&n);
    for(k=1;k<=n;k++){
        if(n<=k*(k+1)/2)
            break;
    }
    printf("%d",k);
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2020-02-26

#include <stdio.h>

int main(void)
{
    int i,n;
    int sum = 0;
    scanf("%d",&n);
    if(n == 1)
        printf("%d",1);
    else
    {
        for(i = 0; sum < n; i++)
        {
            sum += i;
        }
        printf("%d",i-1);
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 316KB, 提交时间: 2020-05-20

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

C 解法, 执行用时: 2ms, 内存消耗: 316KB, 提交时间: 2020-02-19

#include <stdio.h>

int main()
{
    int n,i=0,j=0;
    scanf("%d",&n);
    while(j < n)
    {
        i++;
        j += i;
    }
    printf("%d",i);
}

上一题