我尝试解决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行)
答案 0 :(得分:7)
这里有帮助的是“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
答案 1 :(得分:0)
这是代码
for i in range(1,int(input())+1): #More than 2 lines will result in 0 score. Do not leave a blank line also
print(int(((10**i)-1)/9)**2)
输入:9
输出:12345678987654321
答案 2 :(得分:0)
我确实有两个逻辑代码,它们更倾向于编程语言实用程序而不是数学,但它不适用于您的“三角任务”@Hackerrank
代码 1:
for i in range(1,int(input())):
list(print(i,end="\n"*int(j/i)) for j in range(1,i+1))
for i in range(1,int(input())):
list(print(i,end="") if i!=j else print(i) for j in range(1,i+1))