Hackerrank Quest - 错误或误解?

时间:2015-09-05 16:03:43

标签: python

我和Hackerrank一起玩,遇到了this problem

写成:

  

您将获得正整数N.您必须打印数字   高度为N-1的三角形如下图所示:

1
22
333
4444
55555
......

我的直接想法是这个解决方案:

for i in range(1,input()):
    print(str(i)*i)

将给定的(5)输出作为第一行输入:

1
22
333
4444

提交说这不对。其他被接受的建议在我看来并不那么优雅:

for i in range(1,int(input())):
    print((10**i)//9*i)

输出:

1
22
333
4444

输出相同但代码很难看。为什么这个解决方案可以接受而不是我的?

1 个答案:

答案 0 :(得分:4)

你遗漏了描述中的内容:

  

注意使用与字符串相关的任何内容都会得分为0。

您在解决方案中使用str(),因此根据挑战规则无效。重点是通过计算数字而不是从字符串构建它来找到这个技巧。

我用过:

for i in range(1,int(input())):
    print(i * (10 ** i - 1) // 9)

通过挑战,这基本上是相同的方法。你利用10 // 9是1,100 // 9是11,1000 // 9是111等的事实;获得足够的零以生成正确的位数,并将重复的1数字与i相乘,以获得多个重复的i位数。