在hackerrank上面看到一个蛮好玩的题目: https://www.hackerrank.com/contests/pythonist/challenges/python-quest-1
想了半天没有什么好办法,最后用了一个比较“猥琐”的解法:
for i in range(1,input()):
print [1,22,333,4444,55555,666666,7777777,88888888,999999999][i-1]
题目的限制比较多:
1. 只能两行代码,且第一行已经写好了
2. 只能用一个循环
3. 不能用string相关的操作
有人有其他有趣的解法么?
1
FastMem 2015-05-11 16:30:13 +08:00
研究了 半天也不知道PHP怎么两行。。
|
2
pathletboy 2015-05-11 16:32:49 +08:00
```python
for i in range(1,input()): print(("%d"%(i))*i) ``` 这个合格? |
3
phx13ye 2015-05-11 16:33:22 +08:00
print i * str(i)
为什么我零分啊 |
4
hahastudio 2015-05-11 16:42:28 +08:00 3
这个简单啊,这根本就不是编程题,这个是数学题,求数列通项
print i * (10 ** i - 1) / 9 我觉得我能解出来是因为我太年轻。。。 |
5
wartime 2015-05-11 16:42:50 +08:00 2
print reduce(lambda x, y: x * 10 + y, [i] * i)
|
6
nlimpid 2015-05-11 16:45:38 +08:00
print int('1'*i)*i
|
8
oott123 2015-05-11 16:47:04 +08:00 1
print("▲")
|
9
staticor 2015-05-11 16:55:05 +08:00
同5楼, 楼主做几套公务员行测数量的几个数列题目就知道思路了
|
10
batman2010 2015-05-11 16:55:09 +08:00
foreach my $i (1..9) { print $i x $i, "\n"; }
|
11
mulog 2015-05-11 16:55:21 +08:00
|
12
dingyaguang117 2015-05-11 16:59:10 +08:00
```
for i in xrange(1,10): print str(i)*i ``` |
14
aec4d 2015-05-11 17:12:55 +08:00
用近似欺骗的手段通过了Orz
what = lambda x: 1 if x == 1 else pow(10, x-1) + what(x - 1);print(what(i)*i) |
16
feiyuanqiu 2015-05-11 17:29:37 +08:00
这个题有个问题,当 N >= 10 之后,应该怎么显示呢?
是显示 10 个 10 ?(这样就不是三角形了,这一行有 20 个字符) 或者其他样式显示?(这样整个规则跟前面的就不一致了) 不考虑 N >= 10 的 php 代码: 用字符串: for ($i=1; $i <= $_GET['N']; $i++) printf("%s<br>", str_repeat($i, $i)); 不用字符串: for ($i=1, $base = 1; $i <= $_GET['N']; $base+=pow(10, $i), $i++) printf("%s<br>", $i*$base); |
17
zonghua 2015-05-11 17:30:31 +08:00 via iPhone
我发现我智商不够
|
18
fangjinmin 2015-05-11 17:40:49 +08:00
print str(i) * i
|
19
zealot0630 2015-05-11 17:53:14 +08:00
print i * sum([10**j for j in range(0, i)])
不懂为什么fail |
20
shuson 2015-05-11 17:55:42 +08:00
给我用单循环两行代码画个三角形
我给你钱 |
21
xjx0524 2015-05-11 18:01:27 +08:00
@feiyuanqiu 1≤N≤9
|
22
ykshen 2015-05-12 02:18:31 +08:00
for i in range(1,input()):
print i * (10 ** i) / 9 |