1 进制转换(10分)

题目内容:

给定一个M进制的数,请将其转换为N进制并输出

输入格式:

两行,第一行为空格分隔的两个数字,分别为10进制表示的M与N;其中M, N均满足2 ≤ M、N ≤ 36

第二行为待转换的数字,其中每位超过9的部分从10至36分别用大写字母A-Z表示;输入数据保证其中最大位数对应数字不超过M

输出格式:

一行字符串,表示转换后的N进制数

输入样例:

8 16

‭473‬

输出样例:

‭13B‬

时间限制:500ms内存限制:32000kb

解题思路:

这个题需要两个基本的函数,M进制的数转换成10进制的数,可以通过python自带的功能直接实现,然后10进制的数转换成N进制的数,可以通过对N依次取余数,然后将余数倒序输出,并且在倒序输出余数之前正序输出最后一次的商,这个可以通过while循环实现即可。

程序代码:

# m进制转十进制
def c_m_10(num, m):# 公式 num = an * m**(n-1) + an-1 * m**(n-2).....+ a0 * m**0# 直接利用int的自带功能num = int(str(num), base=m)return num# 十进制转m进制
def c_10_m(num, n):res = ""while num:res = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ"[num % n] + resnum = num // nreturn res
# m进制转n进制
def m_10_n(num, m, n):return c_10_m(c_m_10(num, m), n)m, n = map(int, input().split())
num = input()
print(m_10_n(num, m, n))

补充:

2 四柱汉诺塔(10分)

题目内容:

如课上所说,汉诺塔问题源于印度一个古老传说。对于原始的汉诺塔游戏,可供玩家操作的空间一共只有三根柱子,导致按原传说的要求,需要超过1.8*10^19步才能解开。

透过新增柱子可以大幅度地减少需要的步数。此处要求在给出指定的盘数,柱子数量为4(即限制为4根柱子)且不改变原有传说的其他规则的限制下,找出完成迁移的最小步骤数。

输入格式:

一个非负整数M,M代表盘数,M<=1000。

输出格式:

一个非负整数,表示完成迁移的最小步骤数。

输入样例:

3

输出样例:

5

时间限制:500ms内存限制:32000kb

解题思路:

首先要知道什么是汉诺塔,可以看之前写过的这篇文章——三柱汉诺塔问题。

但是这次是四柱汉诺塔,就是在原来三柱汉诺塔上再加一个柱子(即现在有四根柱子a,b,c,d),计算将n个盘子从第一根柱子全部移动到最后一根柱子上所需要的最小的步数,并且大的盘子不可以放到小的盘子上面。

分析:设F[n]为所求的最小步数,显然,当n=1时,F[n]=1;当n=2时,F[n]=3;如同经典汉诺塔一样,我们将移完盘子的任务分为三步:

  1. 将x(1<=x<=n)个盘子从a柱子上依靠b,d柱子移动到c柱子上,这个过程需要的步数为F[x]。
  2. 将a柱上剩下的n-x个盘依靠b柱移到d柱。这个过程需要的步数为2^(n-x)-1。
  3. 将c柱上的x个盘依靠a,b柱移到d柱上,这个过程需要的步数为F[x]。

故完成任务所需要的总的步数F[n]=F[x]+2^(n-x)-1+F[x]=2*F[x]+2^(n-x)-1;但这还没有达到要求,题目中要求的是求最少的步数,易知上式,随着x的不同取值,对于同一个n,也会得出不同的F[n]。即实际该问题的答案应该min{2*F[x]+2^(n-x)-1},其中1<=x<=n,我们可以用循环的方式,遍历x的各个取值,取x的各个取值中的F[n]的最小值。

程序代码1:

temp = 999999
l = [1,3]
num = int(input())
def hanoi4():if num == 0:print(0)else:for i in range(2,num):l.append(temp)for x in range(0,i):if (2 * l[x] + 2 ** (i-x) - 1) < l[i]:l[i] = 2 * l[x] + 2 ** (i-x) - 1print(l[num-1])
hanoi4()

程序代码2:

这个是用递归做的

def hanoi4(n):h_list = [0] * (n + 1)def f(m):if h_list[m]:return h_list[m]result = 2 ** m - 1for x in range(1, m):result = min(result, 2 * f(x) + 2 ** (m - x) - 1)h_list[m] = resultreturn resultreturn f(n)
print(hanoi4(int(input())))

3 ASCII谢尔宾斯基地毯(10分)

题目内容:

谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。

现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。

注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应

输入格式:

输入为两行,分别为地毯大小正整数N与组成元素字符串c

输入数据保证N为3的正整数幂

输出格式:

由N行长度为N*len(c)的字符串构成的谢尔宾斯基地毯

输入样例:

9

[]

输出样例:

  1. [][][][][][][][][]
  2. []  [][]  [][]  []
  3. [][][][][][][][][]
  4. [][][]      [][][]
  5. []  []      []  []
  6. [][][]      [][][]
  7. [][][][][][][][][]
  8. []  [][]  [][]  []
  9. [][][][][][][][][]

参考程序模板:

  1. def carpet(N,char):
  2. # code here
  3. pass
  4. n=int(input())
  5. c=input()
  6. carpet(n,c)

时间限制:500ms内存限制:32000kb

程序代码:

def carpet(N, C):def check(n, x, y):if n <= 1:return Truen2 = n // 3if n2 <= x < n2 * 2 and n2 <= y < n2 * 2:return Falsereturn check(n2, x%n2, y%n2)for y in range(N):for x in range(N):if check(N, x, y):print(C, end='')else:print(' ' * len(C), end='')print('')N = int(input())
C = input()
carpet(N,C)

MOOC数据结构与算法Python版-第五周编程作业相关推荐

  1. mooc数据结构与算法python版第十一周作业_中国大学 MOOC_数据结构与算法Python版_2020最新答案学习指南...

    中国大学 MOOC_数据结构与算法Python版_2020最新答案学习指南 更多相关问题 [判断题]实际集成运放的上限截止频率为无穷大 [多选题]现代城市的发展凸现出与以往不同的动力机制包括 教师在引 ...

  2. mooc数据结构与算法python版第十周作业_中国大学mooc慕课_数据结构与算法Python版_章节答案...

    新入对于接诊人的院病与查房,中国章节在多必须经治间内进行医师长时. 大学答案高的主要文库日常利用率较有(. 须注下问题:慕课意以,者以知识作为的投资产权出资.在配置上电装,该装装在置(线应部位)的接地 ...

  3. 数据结构与算法Python版-第五周作业

    1. 进制转换(10分) 题目内容: 给定一个M进制的数,请将其转换为N进制并输出 输入格式: 两行,第一行为空格分隔的两个数字,分别为10进制表示的M与N:其中M, N均满足2 ≤ M.N ≤ 36 ...

  4. mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...

    中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...

  5. mooc数据结构与算法python版期末考试_数据结构与算法Python版-中国大学mooc-试题题目及答案...

    数据结构与算法Python版-中国大学mooc-试题题目及答案 更多相关问题 婴儿出生一两天后就有笑的反应,这种笑的反应属于(). [判断题]填制原始凭证,汉字大写金额数字一律用正楷或草书书写,汉字大 ...

  6. mooc数据结构与算法python版期末测验_中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案...

    中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案 更多相关问题 java.lang 包的 Character 类的 isJavaIdentifierStart 方法的功能是用来判断某 ...

  7. 数据结构与算法(Python版)十五:无序表抽象数据类型及Python实现

    列表List:什么是列表? 在前面基本数据结构的讨论中, 我们采用Python List来实现了多种线性数据结构 列表List是一种简单强大的数据集结构,提供了丰富的操作接口 但并不是所有的编程语言都 ...

  8. 数据结构与算法Python版-第六周作业

    1. 铺瓷砖(10分) 题目内容: 给定一个长度为N的区域,及4种不同长度的瓷砖:灰瓷砖(长为1格).红瓷砖(长为2格).绿瓷砖(长为3格)与蓝瓷砖(长为4格),求所有不同的铺满整个区域的方法数. 例 ...

  9. 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...

最新文章

  1. 转:让kindle更好的支持pdf
  2. 《ASP.NET 2.0开发指南》随书光盘 安装问题
  3. 遇到问题描述:Android Please ensure that adb is correctly located at问题解决
  4. Deep learning:二十二(linear decoder练习)
  5. 06 矩阵计算【动手学深度学习v2】
  6. (day 19 - 动态规划)剑指 Offer 42. 连续子数组的最大和
  7. 通过try、except和else的使用来使Python程序更加“强壮”
  8. python svm超参数_为了能早点买房,我用 Python 预测房价走势!
  9. figma学习记录 快捷键 工具了解(1)
  10. Git 团队协作中常用检查术语 WIP PTAL CC LGTM 等解释
  11. c语言运行时电脑蓝屏,Windows系统蓝屏时系统都在后台做了什么?-系统蓝屏
  12. scrapy重试机制_Scrapy项目之User timeout caused connection failure(异常记录)
  13. linux磁盘所有格式化命令,Linux磁盘格式化命令的详细说明
  14. OneTab插件的替代产品-OneTab Pro
  15. 推荐算法之基于物品的协同过滤
  16. AXI4协议学习:架构、信号定义、工作时序和握手机制
  17. 高价NFT不利于流动性
  18. 用手机打开word图表位置很乱_超实用!word、excel、ppt文件互相转换技巧来了
  19. HiKey970固件烧写
  20. FPGA学习笔记【FPGA原理与结构】

热门文章

  1. 推荐4款吾爱破解热门软件
  2. spring-cloud-netflix升级spring-cloud-alibaba-nacos坑
  3. 区块链干什么的?链改又是啥?
  4. 《区块链编程》-第二章
  5. 基于JAVA校园代购服务订单管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 故障:无法显示 Excel 单元格格式
  7. 5G信道建模研究进展与展望
  8. 小红书笔记下沉怎么做?小红书笔记屏蔽怎么做?
  9. 华为手机按下这个键,瞬间投屏到电视大屏幕,效果惊艳堪比电影院
  10. 继承,多态,类的使用