慕课python期末试题+python基础实例

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
  • 13
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值