京东 在线编程题
数列: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
浙公网安备 33010602011771号