pla*_*etp 8 python palindrome python-3.x
我正在尝试解决这个编程难题:
给出正整数N(0 <N <10).你的任务是打印一个大小为N的回文三角形.
例如,大小为5的回文三角形是:
Run Code Online (Sandbox Code Playgroud)1 121 12321 1234321 123454321
你不能超过两行.您必须使用一个print语句来完成代码.
注意:使用与字符串相关的任何内容都会得分为0.使用多个for-statement将得分为0.
我只能想到'愚蠢'的方式来做到这一点:
for i in range(1, N+1):
print([0, 1, 121, 12321, 1234321, 123454321, 12345654321, 1234567654321, 123456787654321, 12345678987654321][i])
Run Code Online (Sandbox Code Playgroud)
有更优雅的解决方案吗?
for i in range(1,int(input())+1):
print(int((10**i-1)/9)**2)
1 -> ( 10 - 1) / 9 = 1, 1 * 1 = 1
2 -> ( 100 - 1) / 9 = 11, 11 * 11 = 121
3 -> ( 1000 - 1) / 9 = 111, 111 * 111 = 12321
4 -> (10000 - 1) / 9 = 1111, 1111 * 1111 = 1234321
Run Code Online (Sandbox Code Playgroud)
我最终做了以下(感谢@ raina77ow的想法):
for i in range(1, N+1):
print((111111111//(10**(9-i)))**2)
Run Code Online (Sandbox Code Playgroud)
for i in range(1,6):
print (((10 ** i - 1) // 9) ** 2)
Run Code Online (Sandbox Code Playgroud)
这是一个wtf单衬:
f=lambda n:n and[f(n-1),print((10**n//9)**2),range(1,n+1)];f(5)
Run Code Online (Sandbox Code Playgroud)
def palindrome(N):
for i in range(1, N + 1):
print(int('1' * i)**2)
palindrome(int(input()))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7955 次 |
最近记录: |