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('正常情况下不会出现此提示:输入错误或者算法有误')
  • 相关阅读:
    Java
    一个web项目web.xml的配置中<context-param>配置作用
    JVM之几种垃圾收集器简单介绍
    JVM日志和参数的理解
    Java GC日志查看
    Java-性能调优-理解GC日志
    理解Java的GC日志
    tomcat打印GC日志
    快速解读GC日志
    Java 堆内存
  • 原文地址:https://www.cnblogs.com/dennis-liucd/p/7514297.html
Copyright © 2011-2022 走看看