如何从 1,2,3 通过公式得出 1,11,111

2016-05-18 11:01:03 +08:00
 Liang
  1. 拼凑,'1'+'1'+'1'=111
  2. 累加, 1+10+100=111 ( 1,10,100 是通过 10 的(x-1)次方算出来的)

4802 次点击
所在节点    PHP
35 条回复
aprikyblue
2016-05-18 13:01:05 +08:00
Min(x)= (-1 + 10^x)/9 
Max(x)= 10*Min(x) = 10(-1 + 10^x)/9
chewuhe
2016-05-18 13:08:03 +08:00
min = 2^(x-1)
0xAdministrator
2016-05-18 13:36:04 +08:00
min=2^n-1 然后转成 2 进
max=2^(n+1)-2 转 2 进
zhujinliang
2016-05-18 13:45:34 +08:00
查表啊,就算你 int64 ,也就是 18 种可能
6david9
2016-05-18 15:09:19 +08:00
geohash?
lessball
2016-05-18 15:25:22 +08:00
((10^x) - 1) / 9
suspended
2016-05-18 16:25:11 +08:00
一个简单的求和数列嘛。

n = 1, 2, 3, 4, ...
min = 10^0 + 10^1 + 10^2 + ... + 10^(n-1)
max = 10^1 + 10^2 + 10^3 + ... + 10^n
xlogion
2016-05-18 16:44:49 +08:00
27 正解

FOR 版本


for ($i=$x; $i>0; $i--) $min+=pow(10,$i-1);

var_dump($min);


for ($i=$x; $i>0; $i--) $max+=pow(10,$i);

var_dump($max);

while 版本

while ($x) {$min+=pow(10,$x-1);$x--;}

while ($x) {$max+=pow(10,$x);$x--;}
stormslowly
2016-05-18 16:50:57 +08:00
明显 12 楼才是正解 构造数列经常用的技巧啊
ffffwh
2016-05-18 17:08:37 +08:00
f(n+1) = 10 * f(n) + 1
f(n + 1) + 1/9 = 10 * (f(n) + 1/9)

然后等比数列求解, 好吧我懵逼了算不对...
还是问 wolframalpha: https://www.wolframalpha.com/input/?i=f(n)+%3D+10+*+f(n-1)+%2B+1,+f(1)+%3D+1
ffffwh
2016-05-18 17:10:08 +08:00
@ffffwh
发现百度的时候眼花把求和公式看成通项...
araraloren
2016-05-18 17:23:29 +08:00
@zhujinliang 就是,还不如查表呢,真正的`O(1)`时间复杂度!
easing
2016-05-18 18:02:17 +08:00
12 楼就已经很简洁了啊
22too
2016-05-18 18:12:36 +08:00
题目我都没看懂,

python

>>> “ 1 ” * 1
>>> "1"
>>> "1" * 2
>>> "11"
>>>"1" * 3
>>>"111"
sophymax
2016-05-18 18:29:46 +08:00
~~~~~别打我 a=[1,11,111]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/279466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX