1
Slienc7 2016-05-18 11:15:43 +08:00 via Android 1
x 直接转 Binary 然后转文本?
|
2
JiShuTui 2016-05-18 11:20:23 +08:00 1
在空字符串的左侧填充 x 个 1
str_pad('', $x, '1', STR_PAD_LEFT) |
3
mcfog 2016-05-18 11:23:27 +08:00 1
难道不是 str_repeat 么 :doge:
|
4
fds 2016-05-18 11:23:55 +08:00 1
直接读表
|
5
moro 2016-05-18 11:24:51 +08:00 1
str_pad("", 3, 1)
|
7
zongwan 2016-05-18 11:28:01 +08:00 3
min = (x * 10 - 1)/9
max = min * 10 |
12
wdk23411 2016-05-18 11:37:15 +08:00
min: (10^x-1)/9
max: min*10 |
13
debiann 2016-05-18 11:38:31 +08:00 via iPhone
等比数列求和
|
14
ryd994 2016-05-18 11:41:58 +08:00 via Android
循环左移累加啊
sum=0 for i 0 n _sum=sum*10+1 |
15
imn1 2016-05-18 12:13:03 +08:00
min 和 max 是 2 进制就简单了
min:(1<<x)-1 max:min<<1 或 (2<<(x+1))-2 |
16
necomancer 2016-05-18 12:29:53 +08:00
for i in range(1, 4):
m = eval('1' * i) M = m * 10 print(m, M) 1 10 11 110 111 1110 |
17
dphdjy 2016-05-18 12:30:03 +08:00 via Android
填充
|
18
necomancer 2016-05-18 12:34:11 +08:00
或者
[ (lambda x: (x, x*10))(eval('1'*x)) for x in range(1,4) ] 输出 [(1, 10), (11, 110), (111, 1110)] |
19
aprikyblue 2016-05-18 12:58:20 +08:00 via Android
min:
数列{Ax} 累加的通项 Ax= 10^(x-1) 累加和 Sx=A1 + A2 + ... + Ax ,记为① 把①两边同乘 10 ,得 10Sx = A1 *10 + A2 *10 + ... Ax *10 整理得, 10Sx = A2 + A3 + ... Ax+1 ,记为② ②-①,得 9Sx= -A1 + Ax+1 Sx = (-A1 + Ax+1)/9 Sx = (-1 + 10^x)/9 -------------------- 代入验证, S1=(-1+10)/9=1 S2=(-1+100)/9=11 S3=(-1+1000)/9=111 |
20
est 2016-05-18 12:58:49 +08:00
python 里很容易啊:
x = 3 int('1' * x) |
21
aprikyblue 2016-05-18 13:01:05 +08:00 via Android
Min(x)= (-1 + 10^x)/9
Max(x)= 10*Min(x) = 10(-1 + 10^x)/9 |
22
chewuhe 2016-05-18 13:08:03 +08:00
min = 2^(x-1)
|
23
0xAdministrator 2016-05-18 13:36:04 +08:00 via Android
min=2^n-1 然后转成 2 进
max=2^(n+1)-2 转 2 进 |
24
zhujinliang 2016-05-18 13:45:34 +08:00
查表啊,就算你 int64 ,也就是 18 种可能
|
25
6david9 2016-05-18 15:09:19 +08:00
geohash?
|
26
lessball 2016-05-18 15:25:22 +08:00
((10^x) - 1) / 9
|
27
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 |
28
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--;} |
29
stormslowly 2016-05-18 16:50:57 +08:00
明显 12 楼才是正解 构造数列经常用的技巧啊
|
30
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 |
32
araraloren 2016-05-18 17:23:29 +08:00
@zhujinliang 就是,还不如查表呢,真正的`O(1)`时间复杂度!
|
33
easing 2016-05-18 18:02:17 +08:00
12 楼就已经很简洁了啊
|
34
22too 2016-05-18 18:12:36 +08:00
题目我都没看懂,
python >>> “ 1 ” * 1 >>> "1" >>> "1" * 2 >>> "11" >>>"1" * 3 >>>"111" |
35
sophymax 2016-05-18 18:29:46 +08:00
~~~~~别打我 a=[1,11,111]
|