概述: 一共6道编程题,前4道超级简单,后2道考察逻辑分析能力和数学思维,设计算法,分析难,代码不难。
真题
第1题,整数加8
题目描述:
输入一个整数,输出这个整数加 8 的结果。
输入描述:
输入一行一个正整数。
输出描述:
输出求和的结果。
样例1:
输入:
5
输出:
13
【知识点】 类型转换和加法运算
【参考代码】:
a = int(input())
print(a+8)
第2题,哼哈二将
题目描述:
哼哈二将,形象威武凶猛,一名能鼻哼白气制敌,一名能口哈黄气擒将。
这样一次"哼哈”就可以消灭一个敌人,现在来了n个敌人,请你输出一串"哼哈"来消灭全部敌人。
例如,当n = 3时,输出”哼哈哼哈哼哈”。
输入描述:
输入一行一个正整数。
输出描述:
输出一串字符。
样例1:
输入:
3
输出:
哼哈哼哈哼哈
【知识点】 字符串的*运算
【参考代码】:
n = int(input())
print("哼哈"*n)
第3题,幸运数字8
题目描述:
在我们的文化里面,有一些幸运数字。比如8有发的谐音,代表发财旺财运的意思,人们都觉得有这个数字是非常吉利的,会给自己带来好运,因此很多时候人们对于8有着非常强烈的钟爱,比如在选择手机号和车牌号的时候,包含着8的号码总是会被优先选择输入一个数,若存在数字8则输出:是幸运数字,否则输出:不是幸运数字。
输入描述:
输入一行一个整数。
输出描述:
若存在数字8则输出:是幸运数字,否则输出:不是幸运数字。
样例1:
输入:
233
输出:
不是幸运数字
[超平老师解读]:
【知识点】 字符串的成员运算符in。
[参考代码]:
a = input()
if '8' in a:
print("是幸运数字")
else:
print("不是幸运数字")
第4题,摆放花盆
题目描述:
国庆节期间,学校操场上摆放了一排花盆,按照2盆菊花,4盆牡丹,2盆百日草的顺序排放,请问第n盆是什么花?
输入描述:
输入一行一个整数n表示第n盆花。
输出描述:
输入一行一个整数n表示第n盆花。
样例1:
输入:
9
输出:
菊花
【分析】 考虑摆放的周期
【参考程序】
a = int(input())
b = (a-1)%8 #下标从0开始计算
if b>=1 and b<=2:
print("菊花")
elif b>=2 and b<=5:
print("牡丹")
else:
print("百日草")
第5题,玩石头游戏
题目描述:
你和你的朋友,两个人一起玩石头游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手,每一回合,轮到的人拿掉1-3块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。现在一共有n块石头,请判断你是否可以赢得游戏如果可以赢,输出win;否则,输出lose。
输入描述:
输入一行一个正整数n,表示石头的个数。
输出描述:
如果可以赢,输出win;否则,输出lose。
样例1:
输入:
4
输出:
lose
玩石头游戏提题解:
https://blog.youkuaiyun.com/diamondwang2012/article/details/132809324
属于必胜策略,分为先手和后手,使用逆推找到致胜点,找到倍数规律
n = int(input())
if n%4 == 0:
print("lose")
else:
print("win")
第6题,卡牌游戏
题目描述:
有n张卡牌。第i张卡牌的位置是position[i]。
我们需要把所有卡牌移到同一个位置。在一步中,我们可以将第i张卡牌的位置从position[i]改变为:
position[i] + 2 或 position[i] - 2,此时的代价 cost = 0
position[i] + 1 或 position[i] - 1,此时的代价 cost = 1
现给出所有卡牌的位置,请你编程输出将所有卡牌移动到同一位置上所需要的最小代价。
输入描述:
输入一行正整数,每个数之间用空格间隔。
输出描述:
输出将所有卡牌移动到同一位置上所需要的最小代价。
样例1:
输入:
1 2 3
输出:
1
纸牌游戏题解:
https://blog.youkuaiyun.com/diamondwang2012/article/details/132856367
使用贪心算法实现,思路是:
①把所有奇数位的纸牌放到第1位,记录移动次数a
②把所有偶数位的纸牌放到第1位,记录移动次数b
③比较a、b的大小关系,把小的移到大的那个位置上
min(a,b)就是最小代价
#列表p存放每一张纸牌的位置
p = [int(i) for i in input().split()]
a,b = 0,0
for i in p:
if i%2==0:
a += 1#所有偶数位置的纸牌放一起
else:
b += 1#所有奇数数位置的纸牌放一起
#最后,a是偶数位纸牌的数量,b是奇数位纸牌的数量
print(min(a,b))
参考博客:https://blog.youkuaiyun.com/diamondwang2012/article/details/132877135