京东 在线编程题

数列:1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6...

求数列第n个位置上的数x为多少?

分析:
x:1,2,2,3,3,3,4,4,4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6...
n:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21...

x与n的对应关系满足

\[\frac{x(x+1)}{2}\geq n > \frac{(x-1)x}{2} \]

\[\Rightarrow x(x+1)\geq 2n > (x-1)x \]

\[\Rightarrow x^2+x\geq 2n > x^2-x \]

\[\Rightarrow x^2+x+\frac{1}{4}\geq 2n+\frac{1}{4} > x^2-x+\frac{1}{4} \]

\[\Rightarrow (x+\frac{1}{2})^2\geq 2n+\frac{1}{4} > (x-\frac{1}{2})^2 \]

\[\Rightarrow x+\frac{1}{2}\geq \sqrt{2n+\frac{1}{4}} > x-\frac{1}{2} \]

\[\Rightarrow \sqrt{2n+\frac{1}{4}}+\frac{1}{2}>x\geq \sqrt{2n+\frac{1}{4}}-\frac{1}{2} \]

由于x是整数,对\(\sqrt{2n+\frac{1}{4}}-\frac{1}{2}\)向上取整就得到x的值
code:

#coding = utf-8
import math
import sys
for line in sys.stdin:
    a = line.split()
    n=int(a[0])
    x=int(math.ceil(math.sqrt(2*n+0.25)-0.5))
    print x

posted @ 2017-09-08 23:57  机器狗mo  阅读(256)  评论(0)    收藏  举报