抹桥的博客
Language
Home
Archive
About
GitHub
Language
主题色
250
273 文字
1 分
網易雲課堂 試験問題 - Python
2015-01-29

課題内容:#

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/
作者
Kisnows
公開日
2015-01-29
ライセンス
CC BY-NC-ND 4.0