第一题:药房管理
1.1 题目描述
对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。
1.2 输入格式
共 3 行,第一行是每天开始时的药品总量m。
第二行是这一天取药的人数。
第三行共有 n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序)。
1.3 输出格式
只有 1 行,为这一天没有取上药品的人数。
1.4 输入输出样例
| 输入 #1 | 输出 #1 |
| 30 6 10 5 20 6 7 8 | 2 |
1.5 可参考代码
# 读入初始可用资源量 m(如药的总量) m = int(input()) # 读入物品/申请数量 n n = int(input()) count = 0 # 记录成功分配(被消耗掉)的数量 j = 0 # a 数组的下标,用于遍历每个申请 # 读入 n 个申请的量,存为字符串列表(后面用 int(a[j]) 逐个转成整数) a = input().split() # 外层循环遍历 n 次(实际由于 j 在内层 while 中会被加到 n, # 外层从第二次起内层 while 都不会执行,所以这个 for 效果等同于只跑一次) for i in range(n): # 内层 while:依次扫描每个申请 a[j],j 从 0 一直走到 n-1 while j < n: if m > 0: # 剩余资源 > 0 才有必要尝试分配 if m >= int(a[j]): # 当前剩余 m 足以满足第 j 个申请 m = m - int(a[j]) # 扣除对应量 count += 1 # 成功分配数 +1 # 若 m < int(a[j]):本次不分配,但 j 仍会前进(放弃该申请) j += 1 # 无论是否分配,下标都前进到下一个申请 # 总申请数 n 减去成功数 count,即为「未能被满足」的数量 no_medicine = n - count print(no_medicine)第二题:超级玛丽
2.1 题目描述
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景:
********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
2.2 输入格式
无
2.3 输出格式
如描述。
2.4 输入输出样例
| 输入 #1 | 输出 #1 |
| 无输入 | ******** ************ ####....#. #..###.....##.... ###.......###### ### ### ........... #...# #...# ##*####### #.#.# #.#.# ####*******###### #.#.# #.#.# ...#***.****.*###.... #...# #...# ....**********##..... ### ### ....**** *****.... #### #### ###### ###### ############################################################## #...#......#.##...#......#.##...#......#.##------------------# ###########################################------------------# #..#....#....##..#....#....##..#....#....##################### ########################################## #----------# #.....#......##.....#......##.....#......# #----------# ########################################## #----------# #.#..#....#..##.#..#....#..##.#..#....#..# #----------# ########################################## ############ |
2.5 可参考代码
print( ' ********\n' ' ************\n' ' ####....#.\n' ' #..###.....##....\n' ' ###.......###### ### ###\n' ' ........... #...# #...#\n' ' ##*####### #.#.# #.#.#\n' ' ####*******###### #.#.# #.#.#\n' ' ...#***.****.*###.... #...# #...#\n' ' ....**********##..... ### ###\n' ' ....**** *****....\n' ' #### ####\n' ' ###### ######\n' '##############################################################\n' '#...#......#.##...#......#.##...#......#.##------------------#\n' '###########################################------------------#\n' '#..#....#....##..#....#....##..#....#....#####################\n' '########################################## #----------#\n' '#.....#......##.....#......##.....#......# #----------#\n' '########################################## #----------#\n' '#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n' '########################################## ############\n' )第三题:A+B Problem
3.1 题目描述
输入两个整数 a,b,输出它们的和。
3.2 输入格式
输入两个以空格分隔的整数 a,b。
3.3 输出格式
输出一个整数,表示 a+b。
3.4 输入输出样例
| 输入 #1 | 输出 #1 |
| 20 30 | 50 |
3.5 可参考代码
a,b=input().split() a=int(a) b=int(b) print(a+b)以上代码可供大家参考,如果大家有更好的方法也可以分享出来哈。
题目来源为:B2067 药房管理 - 洛谷、P1000 超级玛丽游戏 - 洛谷、P1001 A+B Problem - 洛谷。