273 文字
1 分
網易雲課堂 試験問題 - Python
課題内容:
2桁の整数を掛け合わせて作られる最大の回文数は 9009 = 99 × 91 です。任意のn桁の整数を掛け合わせて作られる最大の回文数を求めるプログラムを作成してください。 入力形式: 正の整数 n 出力形式: n桁の整数を掛け合わせて作られる最大の回文数 入力例: 2 出力例: 9009
プログラム:
def is_palindrome(num): #判断是否是回文
n = str(num)
if n == n[::-1]:
return True
else:
return False
n = int(input())
a = 1
arr1 = []
arr2 = []
while len(str(a)) < n + 1: #将n位数的数字加到数组中,同时抛弃n-1位数
if len(str(a)) > n - 1:
arr1.append(a)
arr2.append(a)
a = a + 1
maxPalindrome = 1
for i in arr1[::-1]: #从后面往前开始遍历,取得最大的回文数
for j in arr2[::-1]:
if i*j > maxPalindrome and is_palindrome(i*j):
maxPalindrome = i*j
print(maxPalindrome)
まとめ
アルゴリズムが力任せすぎると感じており、実行効率が低いですが、今のところより良いアルゴリズムは思いつきません。
この記事は 2015年1月29日 に公開され、2015年1月29日 に最終更新されました。3903 日が経過しており、内容が古くなっている可能性があります。
網易雲課堂 試験問題 - Python
https://blog.kisnows.com/ja-JP/2015/01/29/python-neteasy-exam/