zoukankan      html  css  js  c++  java
  • 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,...输入位置输出该位置上的数字,如输入10输出4,输入11输出5.

    #1,2,3,3,3,4,4,4,4,5,5,5,5,5,6,...输入10输出4,输入11输出5.类似这种规律,设计算法。
    
    #设m是我们想要得到的输出结果,那么在输出为m的数字之前有1+2+...+(m-1)个数字。由此可得到一个公式,1+2+...+(m-1) < N <= 1+2+...+m.整理可得:m*m-m < 2*N <= m*2+m.
    #注意到:m*2-m >= m*2-2*m+1=(m-1)*2,  m*2+m < m*2+2m+1=(m+1)*2.由此可得:
    #m-1 <= sqrt(2*N) < m+1. 从而:sqrt(2*N)-1 < m <= sqrt(2*N)+1.
    #对sqrt(2*N)-1向上取整,则 m = ceil( sqrt(2*N)-1 )或int( sqrt(2*N)+1 )【也可以写为ceil( sqrt(2*N)-1 )+1即m+1】.
    
    #导入模块
    import math
    
    #获取整数输入
    N = int(input('请输入一个正整数N:'))
    
    #计算2N的平方根并实现一次向上取整
    tep = (2*N)**0.5
    m = math.ceil(tep-1)
    
    #结果判断
    if m**2-m < 2*N <= m**2+m:
        print('结果是:', m)
    elif (m+1)**2-(m+1) < 2*N <= (m+1)**2+(m+1):
        print('结果是:', m+1)
    else:
        print('正常情况下不会出现此提示:输入错误或者算法有误')
  • 相关阅读:
    poj_1836 动态规划
    动态规划——最长上升子序列
    poj_3260 动态规划
    poj_3628 动态规划
    动态规划——背包问题
    poj_2559 单调栈
    poj_3415 后缀数组+单调栈
    poj_2823 线段树
    poj_2823 单调队列
    poj_3250 单调栈
  • 原文地址:https://www.cnblogs.com/dennis-liucd/p/7514297.html
Copyright © 2011-2022 走看看