我尝试解决 this problem 我知道,我可以那样做
for i in range(1,input()):
print int(str(i)*i)
它可以工作,但我不能使用字符串,所以我想做 喜欢
for i in range(1,input()):
sum+=10**i
print i*((1+sum)%10**i)
for i=1 1*(1+10)%10,
for i=2 2*((1+110)%100),
for i=3 3*((1+1110)%1000) etc.
但它不起作用并且超过 2 行 :( 有人知道如何解决这个问题吗?通常我知道如何用数学方法解决这个问题,但我不知道如何在 python 中做到这一点(没用字符串并写入不超过 2 行)
请您参考如下方法:
“Repunit”的方程式对这里有帮助。从维基百科页面中获取第 i 个 Repunit 的等式,并用 10 代替 b(基数 10),我们得到等式 (10**i - 1)/(10 - 1)或 (10**i - 1)/9。这导致序列:1, 11, 111, 1111...。乘以 i,我们得到了想要的结果:
>>> for i in range(1, input()):
... print(i * (10**i - 1) // 9)
5<Enter>
1
22
333
4444
