【学长带练】编程手算题

目录

1、空间

2、ASC

3、特殊时间

4、相乘


1、空间

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?

运行限制

  • 最大运行时间:1s
  • 最大运行内存:   128M

根据换算关系:

1 MB = 1024 KB

1 KB = 1024 B

1 B = 8 b

根据基本概念: B 是代表字节, b 代表位。首先我们换算一下 256 MB 有多少位:

256 MB = 256 × 1024 KB = 256 × 1024 × 1024 B = 256 × 1024 × 1024 × 8 b = 2147483648 b

好的,题目问我们一共能储存多少个 32 位整数,整除一下就是答案惹。

2147483648 / 32 = 67108864

所以答案为 67108864。

2、ASC

已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?

运行限制

  • 最大运行时间:1s
  • 最大运行内存:   128M

L​​ 是英文字母表第十二个,所以 A​​ 的 ASCII​​ 码为 65​​,则 L​​ 的 ASCII​​ 码为 65 + 11 = 76

所以最终答案为 76.

print(ord('L'))

3、特殊时间

2022 年 2 月 22 日 22:20 是一个很有意义的时间,年份为 2022,由 3 个 2 和 1 个 0 组成;如果将月和日写成 4 位,为 0222,也是由 3 个 2 和 1 个 0 组成;如果将时间中的时和分写成 4 位,还是由 3 个 2 和 1 个 0 组成。

小蓝对这样的时间很感兴趣,他还找到了其它类似的例子,比如 111 年 10 月 11 日 01: 11,2202 年 2 月 22 日 22: 02 等等。

请问,总共有多少个时间是这种年份写成 4 位、月日写成 4 位、时间写成 4 位后由 3 个一种数字和 1 个另一种数字组成。注意 1111 年 11 月 11 日 11: 11 不算,因为它里面没有两种数字。

运行限制

  • 最大运行时间:1s
  • 最大运行内存:   512M
def check(n):
    if n[0]==n[3]:
        return False
    if n[1]!=n[2]:
        return False
    if n[0]==n[1] or n[2]==n[3]:
        return True
    return False

year=[]
for y in range(1,10000):
    s="%04d"%(y)
    s1=sorted(s)
    if check(s1):
        year.append(s1)

day=[]
for m in range(1,13):       # 12个月
    for d in range(1,31):   # 31日肯定不符合(唯一的11月31日不存在)。同理2月29、30肉眼可见是错的。所以循环到30结束。
        s="%02d%02d"%(m,d)
        s1=sorted(s)
        if check(s1):
            day.append(s1)

hour=[]
for h in range(0,24):
    for m in range(0,60):
        s="%02d%02d"%(h,m)
        s1=sorted(s)
        if check(s1):
            hour.append(s1)

cnt=0
for i in year:
    for j in day:
        for k in hour:
            if i==j and j==k:
                cnt+=1

print(cnt)    # 212

4、相乘

 小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以 1000000007 的余数,会得到不同的数。 小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后再除以 1000000007 后的余数为 999999999。如果存在,请在答案中提交这个数; 如果不存在,请在答案中提交 0。

运行限制

  • 最大运行时间:1s
  • 最大运行内存:   128M
for i in range(1,1000000008):
    if (i*2021)%1000000007==999999999:
        print(i)       # 17812964
        break

以上,【学长带练】编程手算题

祝好

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕飞雨的头发不能秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值