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

2016 年 5 月 18 日
 Liang
  1. 拼凑,'1'+'1'+'1'=111
  2. 累加, 1+10+100=111 ( 1,10,100 是通过 10 的(x-1)次方算出来的)

5333 次点击
所在节点    PHP
35 条回复
Slienc7
2016 年 5 月 18 日
x 直接转 Binary 然后转文本?
JiShuTui
2016 年 5 月 18 日
在空字符串的左侧填充 x 个 1
str_pad('', $x, '1', STR_PAD_LEFT)
mcfog
2016 年 5 月 18 日
难道不是 str_repeat 么 :doge:
fds
2016 年 5 月 18 日
直接读表
moro
2016 年 5 月 18 日
str_pad("", 3, 1)
JiShuTui
2016 年 5 月 18 日
@mcfog 对,应该用 str_repeat
zongwan
2016 年 5 月 18 日
min = (x * 10 - 1)/9
max = min * 10
zongwan
2016 年 5 月 18 日
@zongwan
<<< x * 10
>>> x ** 10
Liang
2016 年 5 月 18 日
@JiShuTui
@mcfog
@moro

好吧,你们也是拼出来的字符串,不是一次得出整型。
zongwan
2016 年 5 月 18 日
@zongwan
上面还是错了
<<< x ** 10
>>> 10 ** x
Liang
2016 年 5 月 18 日
@zongwan

哈哈哈,我就说算了几次没对。。。
wdk23411
2016 年 5 月 18 日
min: (10^x-1)/9
max: min*10
debiann
2016 年 5 月 18 日
等比数列求和
ryd994
2016 年 5 月 18 日
循环左移累加啊
sum=0
for i 0 n
_sum=sum*10+1
imn1
2016 年 5 月 18 日
min 和 max 是 2 进制就简单了
min:(1<<x)-1
max:min<<1 或 (2<<(x+1))-2
necomancer
2016 年 5 月 18 日
for i in range(1, 4):
m = eval('1' * i)
M = m * 10
print(m, M)

1 10
11 110
111 1110
dphdjy
2016 年 5 月 18 日
填充
necomancer
2016 年 5 月 18 日
或者
[ (lambda x: (x, x*10))(eval('1'*x)) for x in range(1,4) ]
输出
[(1, 10), (11, 110), (111, 1110)]
aprikyblue
2016 年 5 月 18 日
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
est
2016 年 5 月 18 日
python 里很容易啊:

x = 3

int('1' * x)

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

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

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

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

© 2021 V2EX