本文共 5428 字,大约阅读时间需要 18 分钟。
试题网站:http://oj.hzjingma.com/
有一些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6,其他数字颠倒过来不构成数字。
类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901
假设某个城市的车牌只由6位数字组成,每一位都可以取0到9。请问这个城市最多有多少个车牌180°180°倒过来恰好还是原来的车牌?
例如:车牌号:886988,倒过来还是886988
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个数字,填写多余的内容将无法得分。
ans = 0for 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)
不知天上宫阙,今夕是何年。
对于完美日期yyyy/mm/dd,wlxsq的定义是:
年月日中均没有出现数字4,
年月日的数位之和是8的倍数 例如:2020/02/02 就是一个完美日期,没有出现数字4,且数位之和是8的倍数。wlxsq想知道从2020/02/02开始,第88个完美日期是哪个?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个格式yyyy/yy/dd,在提交答案时直接填写这个日期,注意需要如果答案有前导零则不能忽略,填写多余的内容将无法得分。
y = 2020m = 2d = 2day_ = [0, 31,28,31,30,31,30,31,31,30,31,30,31]ans = 0while ans <= 87: if '4' not in str(y) and '4' not in str(d) and '4' not in str(m): if d >= 10: if (y+m+int(str(d)[0])+(int(str(d)[1]))) % 8 == 0: ans += 1 print(ans) print(y, m, d) else: if (y+m+d)%8 == 0: ans += 1 print(ans) print(y, m, d) d += 1 if d > day_[m]: d = 1 m += 1 if m > 12: m = 1 y += 1
描述
【问题描述】天机锁,锁天机~
wlxsq在机缘巧合的情况下就获得一把天机锁。wlxsq迫不及待的想打开这把锁。该锁的密码是由八个数字构成的,每个数字都是[0,9]中的一个~
锁上面写道:
水(数字9)火(数字4)相生相克,同现同隐(要么都出现,要么都不出现),数量一致(且出现则数量得一样多)。
土(数字2)乃大地,为伊始(数字2一定出现)。 世间万物,不过五二(八个数字之和不超过52)。 此乃天机,一日一次之~ 由于天机锁一天只能试一次,wlxsq想知道,总共有多少种方案~ans = 0for i in range(0, 100000000): s = str(i) s = s.zfill(8) if '2' in s: if '4' in s and '9' in s and s.count('4') == s.count('9'): if int(s[0])+int(s[1])+int(s[2])+int(s[3])+int(s[4])+int(s[5])+int(s[6])+int(s[7]) <= 52: ans += 1 print(i) else: continue elif '4' not in s and '9' not in s: if int(s[0])+int(s[1])+int(s[2])+int(s[3])+int(s[4])+int(s[5])+int(s[6])+int(s[7]) <= 52: ans += 1 print(i) else: continue else: continueprint(ans)
(全部情况-A=B情况)/2+A=B情况
def 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 ansif __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)
描述
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!
def solve(list): for i in range(5): for j in range(i + 1, 5): for k in range(j + 1, 5): if (list[i] + list[j] + list[k]) % 10 == 0: num1 = list[i] num2 = list[j] num3 = list[k] list.remove(num1) list.remove(num2) list.remove(num3) if (list[0] + list[1]) % 10 == 0: str1 = "so cool!" return str1 else: return (list[0] + list[1]) % 10 else: continue else: str2 = "so sad!" return str2if __name__ == '__main__': str = input() str = str.replace('A','1') str = str.replace('S','10') str = str.replace('K','10') str = str.replace('Q','10') str = str.replace('J','10') list = list(str.split()) for i in range(len(list)): list[i] = int(list[i]) ans = solve(list=list) print(ans)
样例
输入1 10 3 5输出3输入2 103 52 6输出2
n,k = map(int, input().split())ans = 0list1 = []list2 = []for i in range(n): a,b = map(int, input().split()) list1.append(a) list2.append(b)list1 = sorted(list1)list2 = sorted(list2)while list2 and list2[-1] > list1[-1] and k > 0: k -= list2[-1] list2.pop() ans += 1if k > 0: ans += k // list1[-1] + 1print(ans)
转载地址:http://zlswi.baihongyu.com/