1.题目内容:
某些英语单词的字母经过重新排列后,能获得另外一个单词,如可以将“cinema”转换成另一个单词“iceman”。编写程序,将词表中由相同字母组成的单词聚成一类,并按照单词个数由多到少的顺序输出各类中的全部单词(每类占一行,单词按字典序由小到大排列,之间用空格分隔),若每类中单词个数相同,则按每类中第一个单词的字典序由大到小输出各个类别。
输入格式:
按字典序由小到大输入若干个单词,每个单词占一行。
输出格式:
并按照单词个数由多到少的顺序输出各类中的全部单词(每类占一行,单词按字典序由小到大排列,之间用空格分隔),若每类中单词个数相同,则按每类中第一个单词的字典序由大到小输出各个类别。
输入样例:
cinema
iceman
maps
spam
输出样例:
maps spam
cinema iceman
时间限制:500ms内存限制:32000kb
第一题暂时没什么思路- -
2.题目内容:
两位整数相乘形成的最大回文数是 9009 = 99 × 91。编写程序,求得任意输入的 n 位整数相乘形成的最大回文数。
输入格式:
正整数 n
输出格式:
n 位整数相乘形成的最大回文数
输入样例:
2
输出样例:
9009
这道题第一反应就是倒序遍历,然后自己就死磕在了超出时间这个问题上。
当4位时,python速度已经很慢了。提交之后在讨论区看到别人的优化代码,速度明显提高,贴上来研究研究。
# -*- coding: cp936 -*-
def panduan(mun_1):
#判断是否是回文数
a = str(mun_1)
b = list(a)
b.reverse()
c = ''.join(b)
if a == c:
return True
else:
return False
def mun(n):
#N位整数最大值
a = 10**n -1
return a
n = int(raw_input())
a = mun(n)
b = mun(n)
mun_max = 0
mun = 0
max_b = 0
while True:
b -= 1
mun = a * b
if panduan(mun):
if mun >= mun_max:
mun_max = mun
max_b = b
if mun <= mun_ma