• 九度OJ 1357:疯狂地Jobdu序列 (数字特性)


    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:715

    解决:263

    题目描述:

    阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:

    1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 ……

    即大小为k的数字,正好会在序列中连续重复k次。写到这里,阳仔兴奋了,但是他不知道这种序列叫什么名字,那就暂时叫它jobdu疯狂序列好了。现在阳仔想让你解决一个问题是,假如给你一个整数n,你能说出这个序列中,第n个元素的大小是多少么? 记住,速度要快哦,亲~

    输入:
    每个测试文件包含多个测试案例,每个测试案例只有一行,即整数n,1 <= n <= 10^18,代表要查找的第n个元素。
    输出:
    对于每个测试案例,输出疯狂的jobdu序列中的第n个元素。
    样例输入:
    1
    2
    3
    4
    5
    
    样例输出:
    1
    2
    2
    3
    3
    
    提示:

    输入较大,不建议使用cin读入输入数据。


    代码:

    #include <stdio.h>
    #include <math.h>
     
    #define N 1000
     
    int main(void)
    {
        long long n;
        long long m, a, b, res;
     
        while (scanf("%lld", &n) != EOF)
        {
            m = sqrt(2*n);
            a = m*(m+1)/2;
            b = (m+1)*(m+2)/2;
            if (n <= a)
                res = m;
            else if (n <= b)
                res = m+1;
            else
                res = m+2;
            printf("%lld
    ", res);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1357
        User: liangrx06
        Language: C
        Result: Accepted
        Time:40 ms
        Memory:928 kb
    ****************************************************************/


  • 相关阅读:
    unity基础之C#基础——[转]大白话系列之C#委托与事件讲解(一)
    [转]ListView滚动到底部自动加载数据
    [转]Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法
    EditText光标不显示
    Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理
    安卓自定义控件
    安卓ViewFlipper和ViewPager
    安卓Binder机制简析
    《深入浅出Mysql》笔记---优化
    《高性能MySQL》學習筆記--索引
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083777.html
Copyright © 2020-2023  润新知