试题网站:http://oj.hzjingma.com/
@TOC
A. 试题A:完美车牌 5’
有一些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6,其他数字颠倒过来不构成数字。
类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901
假设某个城市的车牌只由6位数字组成,每一位都可以取0到9。请问这个城市最多有多少个车牌180°180°倒过来恰好还是原来的车牌?
例如:车牌号:886988,倒过来还是886988
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个数字,填写多余的内容将无法得分。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20ans = 0
for i in range(1, 1000000):
i = str(i).zfill(6) # 补充前导0
if '2' in str(i) or '3' in str(i) or '4' in str(i) or '5' in str(i) or '7' in str(i):
continue
else:
s = str(i)
s1 = ''
for i in range(6):
if s[5-i] == '6':
s1 += '9'
elif s[5-i] == '9':
s1 += '6'
else:
s1 += s[5-i]
if s == s1:
ans += 1
print(s)
print(ans)
B. 试题B:完美日期 5’
不知天上宫阙,今夕是何年。
对于完美日期yyyy/mm/dd,wlxsq的定义是:
年月日中均没有出现数字4,
年月日的数位之和是8的倍数
例如:2020/02/02 就是一个完美日期,没有出现数字4,且数位之和是8的倍数。
wlxsq想知道从2020/02/02开始,第88个完美日期是哪个?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个格式yyyy/yy/dd,在提交答案时直接填写这个日期,注意需要如果答案有前导零则不能忽略,填写多余的内容将无法得分。
1 | y = 2020 |
C. 试题C:天机锁10’
描述
【问题描述】
天机锁,锁天机~
wlxsq在机缘巧合的情况下就获得一把天机锁。wlxsq迫不及待的想打开这把锁。该锁的密码是由八个数字构成的,每个数字都是[0,9]中的一个~
锁上面写道:
水(数字9)火(数字4)相生相克,同现同隐(要么都出现,要么都不出现),数量一致(且出现则数量得一样多)。
土(数字2)乃大地,为伊始(数字2一定出现)。
世间万物,不过五二(八个数字之和不超过52)。
此乃天机,一日一次之~
由于天机锁一天只能试一次,wlxsq想知道,总共有多少种方案~
1 | ans = 0 |
D. 试题D:完美运算 10‘
思路:算出全部情况和A=B的情况,最后(全部情况-A=B情况)/2+A=B情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33def f(n):
x = 3
#n为待转换的十进制数,x为机制,取值为2-16
a=[0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F']
b=[]
while True:
s=n // x # 商
y=n % x # 余数
b=b+[y]
if s==0:
break
n=s
b.reverse()
ans = ''
for i in b:
ans += str(a[i])
return ans
if __name__ == '__main__':
ans = 0
ans2 = 0
for i in range(1, 2021):
for j in range(1, 2021):
a1 = f(i).count('1')
a2 = f(i).count('2')
b1 = f(j).count('1')
b2 = f(j).count('2')
if abs(int(a1)-int(a2)) == abs(int(b1)-int(b2)):
ans += 1
if i == j:
ans2 += 1
print(ans)
print(ans2)
F. 试题F:JM斗牛 17’
描述
JM打完麻将,觉得太简单了,所以决定去斗牛,挑战一下高难度。
一副牌共54张牌,即采用牌大王(1张),小王(1张),K,Q,J,10,9,8,7,6,5,4,3,2,A。除了大小王,其余牌型均为4张。故4*13+2=54张
斗牛则是每人5张牌,计算5张牌的构成的点数,然后比较点数大小。
关于点数计算:
大王(S),小王(S),K,Q,J都当成是10点,A当成是1点,其余牌都当其本身的点数。 大王,小王均用大写字母S表示
每位玩家5张牌,玩家用手上任意的3张牌组合(且只能用3张牌组成10的倍数),使其点数之和为10的倍数,这样就称之为“牛”。
然后将剩余的2张牌点数之和取个位数,如这2张牌之和也为10的倍数,则组成“牛牛”牌型。如这2张牌之和不为10的整数倍,则去掉十位数之后个位数为几,则成为“牛几”牌型。
如任意三张牌组合的点数之和都不能成为10的倍数,则称之为“无牛”牌型。
例如:
牛牛牌型:选取的3张牌之和为10的整数倍,余下2张牌之和也为10的整数倍。例:A,9,10,J,Q.选取(A,9,J)和为10的整数倍,(10,Q构成)牛牛
牛九牌型:选取的3张牌之和为10的整数倍,余下2张牌之和的个位数为9。例:A,9,10,J,9。
牛八牌型:选取的3张牌之和为10的整数倍,余下2张牌之和的个位数为8。例:A,9,10,J,8。
牛七牌型:选取的3张牌之和为10的整数倍,余下2张牌之和的个位数为7。例:A,9,10,J,7。选取(A,9,J)和为10的整数倍,(10,7构成)牛七
无牛牌型: 任意选取的3张牌之和均不可能为10的整数倍例:A,9,8,9,7。
JM会打麻将,但是不怎么会斗牛,想请你帮忙编写程序帮忙计算一下,JM 拿到的牌是什么牌型。
样例
输入
A 2 3 5 S
输出
1
输入
S S A 8 8
输出
so sad!
输入
S S J Q K
输出
so cool!
1 | def solve(list): |
H. 试题H:宝剑锋从磨砺出 20’
思路: k减去所有材料的p2,然后找到最大的p1去处理k
样例
输入
1 10
3 5
输出
3
输入
2 10
3 5
2 6
输出
2
1 | n,k = map(int, input().split()) |