#学习笔记
#用以练习Python基础
#
#原题链接 https://www.patest.cn/contests/pat-b-practise/1046
1046. 划拳(15)
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。
下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。
输入格式:
输入第一行先给出一个正整数N(<=100),随后N行,每行给出一轮划拳的记录,格式为:
甲喊 甲划 乙喊 乙划
其中“喊”是喊出的数字,“划”是划出的数字,均为不超过100的正整数(两只手一起划)。
输出格式:
在一行中先后输出甲、乙两人喝酒的杯数,其间以一个空格分隔。
输入样例:
5 8 10 9 12 5 10 5 10 3 8 5 12 12 18 1 13 4 16 12 15
输出样例:
1 2
AC代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
n
=
int
(
input
())
x
=
y
=
0
for
i
in
range
(n):
L
=
str
(
input
())
L
=
L.split(
' '
)
a1
=
int
(L[
0
])
a2
=
int
(L[
1
])
b1
=
int
(L[
2
])
b2
=
int
(L[
3
])
if
(a2
=
=
a1
+
b1
and
a2!
=
b2):
x
=
x
+
1
if
(b2
=
=
a1
+
b1
and
a2!
=
b2):
y
=
y
+
1
print
(
"%d %d"
%
(y,x))
|
#原题链接:https://www.patest.cn/contests/pat-b-practise/1041
1041. 考试座位号(15)
每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信息:“准考证号 试机座位号 考试座位号”。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数M(<=N),随后一行中给出M个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。
输入样例:
4 10120150912233 2 4 10120150912119 4 1 10120150912126 1 3 10120150912002 3 2 2 3 4
输出样例:
10120150912002 2 10120150912119 1
AC代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
n
=
int
(
input
())
#lists = [[] for i in range(n)]
lists
=
[]
for
i
in
range
(n):
lists.append(
str
(
input
()).split(
' '
))
m
=
int
(
input
())
x
=
str
(
input
())
x
=
x.split(
' '
)
for
k
in
x:
for
j
in
range
(n):
if
(lists[j][
1
]
=
=
k):
print
(lists[j][
0
],lists[j][
2
])
break
|
原题链接:https://www.patest.cn/contests/pat-b-practise/1044
1044. 火星数字(20)
火星人是以13进制计数的:
-
地球人的0被火星人称为tret。
-
地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
-
火星人将进位以后的12个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的数字“29”翻译成火星文就是“hel mar”;而火星文“elo nov”对应地球数字“115”。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入格式:
输入第一行给出一个正整数N(<100),随后N行,每行给出一个[0, 169)区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4 29 5 elo nov tam
输出样例:
hel mar may 115 13
AC代码
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
|
N
=
int
(
input
())
base
=
[
'tret'
,
'jan'
,
'feb'
,
'mar'
,
'apr'
,
'may'
,
'jun'
,
'jly'
,
'aug'
,
'sep'
,
'oct'
,
'nov'
,
'dec'
]
high
=
[
'tam'
,
'hel'
,
'maa'
,
'huh'
,
'tou'
,
'kes'
,
'hei'
,
'elo'
,
'syy'
,
'lok'
,
'mer'
,
'jou'
]
def
Mars2Earth(mars):
S
=
mars.split(
' '
)
if
len
(S)
=
=
2
:
print
((high.index(S[
0
])
+
1
)
*
13
+
base.index(S[
1
]))
else
:
try
:
print
(base.index(S[
0
]))
except
:
print
((high.index(S[
0
])
+
1
)
*
13
)
def
Earth2Mars(earth):
h
=
earth
/
/
13
if
earth
%
13
!
=
0
and
h >
0
:
print
(high[h
-
1
], end
=
' '
)
print
(base[earth
%
13
])
elif
h>
0
and
earth
%
13
=
=
0
:
print
(high[h
-
1
])
elif
h
=
=
0
:
print
(base[earth
%
13
])
for
i
in
range
(N):
L
=
str
(
input
())
if
L.isdecimal()
=
=
True
:
Earth2Mars(
int
(L))
else
:
Mars2Earth(L)
|