【Educoder作业】※ 数值信息——除二取余

好久没更了,主要是五一放假小摆一波

T1 准备工作:字符串



这些是字符串的基本操作,需要注明的一点是:
字符串本身并不支持单点修改,切记切记
这个题就是基础应用了

ID = input()                #ID表示学号
########## Begin ##########
if len(ID) != 8:                       #如果学号不是8位print('不是8位')
if ID.startswith('20') == False:                       #如果学号未以20开头print('未以20开头')
if ID[2 : 4] != '18' and ID[2 : 4] != '19' and ID[2 : 4] != '20':                       #如果学号3、4位不正确print('第3、4位不正确')
for i in ID:                      #对于学号中的每一位xif (i in '0123456789') == False :                  #如果x不是数字字符print(i, '不是数字')
########## End ##########
print('检查完成')

T2 实现除二取余方法

在进制转换中,我们需要频繁的使用 s t r str str函数和 e v a l eval eval函数,前者用来将数字变成字符串,后者来得到字符串中的值。
我们往往用 i n t int int来保存十进制,其余所有进制一律用 s t r i n g string string

########## Begin ##########
def DecToBin_int(d) :b = ''while d :b = str(d % 2) + bd = d // 2return b
########## End ##########
d = int(input())
print(DecToBin_int(d))

T3 改进程序

这种处理负数的,我们中心思想可以总结为两步:变成正数需要的,处理正数到负数之间需要的。
这个题当然是容易的,如果是负数就是变成正数处理好了之后加个负号即可。

########## Begin ##########
def DecToBin_int(d) :b = ''while d :b = str(d % 2) + bd = d // 2return b
def Dispose(x) :if x > 0 :return DecToBin_int(x)elif x == 0 :return 0else :return '-' + DecToBin_int(-x)
########## End ##########
d = int(input())
print(Dispose(d))

T4 递归函数

有点莫名其妙,突然就变成递归了

########## Begin ##########
def F(x) :if x == 1 or x == 2 :return 1else :return F(x - 1) + F(x - 2)
########## End ##########
n = int(input())
print(F(n))

T5 算法复杂度

这个题的想法是精彩的,我们也就顺便聊几句
空间换时间是容易理解的,就是把东西存起来,以此来节省重复计算需要的时间。就像这个题一样,我们搞一个数组,如果他被计算过,我们就是直接访问;如果没被计算过,就计算它。
那么有没有时间换空间呢?其实就是上面过程的逆过程,有些东西存起来太大了,但是算起来又比较容易,我们就每次用的时候重新算。
回到这个题。
我们理解了空间换时间之后,题目里的数组真的有必要吗?
你会发现,如果想计算 f i b n fib_n fibn​,前 n − 1 n-1 n−1项的值你就必须都知道,否则 f n f_n fn​的值就算不出来
那我们可以从第一项开始,一直算到第 n n n项。
但是,每次计算的时候只会用到 i − 1 , i − 2 i-1,i-2 i−1,i−2,其实我们可以只存三个数 f i b i − 1 , f i b i − 2 , f i b i fib_{i-1},fib_{i-2},fib_i fibi−1​,fibi−2​,fibi​每次都更新这三个数即可,可以做到在只保存 3 3 3个数的情况下完成 O ( n ) O(n) O(n)时间内计算 f i b n fib_n fibn​,具体的代码实现就交给读者了。

cache = [1, 1]  #用于存储已算出的项,第i号元素对应第i+1项,最开始时存放了第1、2项
def F(n): if len(cache)>=n:      #先到列表中查询,若列表中包含了F(n)return cache[n-1]  #则直接返回F(n)else:                  #否则计算F(n)Fn = F(n-1)+F(n-2) #计算F(n)的方法与之前相同cache.append(Fn)   #将计算结果存入列表,以便后续直接使用return Fn          #返回计算结果n = int(input())
print(F(n))

T6 除二取余方法的递归实现

没啥好说的,一个递归就行

########## Begin ##########
def f(x) :if x == 1:return '1'else :return f(x // 2) + str(x % 2)
########## End ##########
d = int(input())
print(f(d))

T7 递归程序的改进

跟上面那对儿一样,就是加一个处理负数和零

def f(d):if d==1:return '1'else:return f(d//2)+str(d%2)
########## Begin ##########
def DecToBin_int(x) :if x < 0 :return '-' + f(-x)if x == 0 :return '0'return f(x)
########## End ##########
d = int(input())
print(DecToBin_int(d))

T8 Python对进制转换的支持

这个题其实就是 P y t h o n Python Python的强大之处。它会把你可能用到的所有函数都封装好,这就是典型的空间换时间

d = int(input())
########## Begin ##########
b = bin(d)
b = b.replace('0b', '')
########## End ##########
print(b)

这个 0 b 0b 0b不是偶然现象,只要使用这个 b i n bin bin函数就会这样子,之后我们在用这种方式转换进制的时候也要记得去掉。

【Educoder作业】※ 数值信息——除二取余相关推荐

  1. ※ 数值信息——除二取余

    第1关:准备工作:字符串 在 Begin-End 区间问号处填入合适的代码(先删除问号),使程序能够检查学号是否合法.合法的学号要满足以下条件: 1)共 8 位: 2)以"20"开 ...

  2. 【Educoder作业】问题求解——进制

    [Educoder作业]问题求解--进制 T1 前苏联的黑科技 三进制和二进制其实没啥区别 只要上一个作业用的不是特判写的题,这个题就没任何难度 dspdspdsp是disposedisposedis ...

  3. 【Educoder作业】冯·诺依曼体系结构及工作原理理解

    [Educoder作业]冯·诺依曼体系结构及工作原理理解 所有的那个实际场景模拟的题就不更了,没难度,趣味性更高. 这个题和我们之前的一篇博客里面的题只一模一样的,链接. 我们这里就不做任何讲解了,要 ...

  4. 【Educoder作业】CC++指针实训

    [Educoder作业]C&C++指针实训 不是很熟练,之前从来没用过,讲解不到位恕罪. T1 去掉字符串首尾空格 我们需要知道两个事情,第一个事情是在函数中引用了数组指针之后,在函数内部就可 ...

  5. 【Educoder作业】认识数字音频

    [Educoder作业]认识数字音频 T1 认识数字音频 他这个问题在于,printprintprint在格式化输出的时候需要注意,%\%%是要求加括号的,不然会报错. ########## Begi ...

  6. 【Educoder作业】※ 数字图像——绿幕抠像

    [Educoder作业]※ 数字图像--绿幕抠像 好像顺序不太对?这个应该在问题求解前面? 这次作业比上一篇博客基本得多,大多都是基础函数的运用. T1 获取图像分辨率 没啥说的,就整个 s i z ...

  7. 【Educoder作业】操作系统之文件管理(二) ※

    [Educoder作业]操作系统之文件管理(二) ※ Sorry~拖更这么久,都快到ddl了才发.英语真是太难了 这次主要是几个ososos库里函数的运用,给我搞得有点小晕. 介绍几个概念:绝对路径和 ...

  8. 【Educoder作业】※ 字符信息——凯撒加密

    [Educoder作业]※ 字符信息--凯撒加密 应读者要求,提前写了提前更出来. 整个作业我们主要就围绕ASCIIASCIIASCII码来做事,明确了计算机就是只存010101,连字符都是01010 ...

  9. 【Educoder作业】CC++函数实训

    [Educoder作业]C&C++函数实训 是不是学会了函数就可以做任何题了- T1 登月纸桥 给出了函数的基本定义,可以在主函数上面定义函数,然后在主函数下面写函数.可能会显得可读性强一点? ...

最新文章

  1. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
  2. 软件测试的复杂性与经济性
  3. nodejs实现webservice问题总结
  4. Shell脚本之一 Shell脚本简介
  5. P4343-[SHOI2015]自动刷题机【二分答案】
  6. C语言程序设计 文件操作函数
  7. Golang——枚举(iota)的使用
  8. 远程计算机怎么安装软件安装,轻松一步把电脑上的软件远程安装到电视上!
  9. vue:在router里面给页面加title
  10. 汇编语言转为c语言,如何把汇编语言转换成C语言
  11. Linux-Can't create socket: Too many open files
  12. 光影之路 GPU架构发展史(4/4)
  13. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x80 in position 2
  14. 滤波器频率响应 matlab,滤波器频率响应与实际滤波情况不符合
  15. mysql 1114错误_mysql出现错误编码1114怎么办
  16. postgresql 中文azw3_制作mobi格式的PostgreSQL文档
  17. 深圳海关计算机应用岗位进面分数,这是深圳国税和海关的进面分数线,看完你还敢报吗?...
  18. matplotlib 点线动画
  19. 面试java想要高工资的看这里
  20. strstr函数.c

热门文章

  1. 小程序获取头像昵称最新版本
  2. linux脚本echo off,echo什么意思_@echo off的作用 - 编程语言及工具 - 电子发烧友网
  3. 我整理了50道经典Java算法题,直接进了字节跳动!!
  4. 使用gpu服务器搭建人脸识别系统,人脸识别gpu服务器配置
  5. LabVIEW FPGA PCIe开发讲解-7.2节:目前主流的4大Xilinx FPGA PCIe DMA通信IP核讲解
  6. Go专家编程 timer、ticker
  7. 计算RSBF各项指标
  8. 在linux前台和后台运行程序
  9. Ajax库-认识服务器,URL地址,axios基本用法,响应状态码,业务状态码,接口测试工具
  10. java版溺尸刷怪塔_minecraft河流群系溺尸刷怪塔存档