目录
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
以上,【学长带练】编程手算题
祝好