1. 语句解析
题目描述
一串长度不超过 255 的 PASCAL 语言代码,只有 a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,每条赋值语句的格式是
[变量]:=[变量或一位整数];
。未赋值的变量值为 0 输出 a,b,c 的值。输入格式
一串符合语法的 PASCAL 语言,只有 a,b,c 三个变量,而且只有赋值语句,赋值只能是一个一位的数字或一个变量,未赋值的变量值为 0。
输出格式
输出 a,b,c 最终的值。
样例输入
a:=3;b:=4;c:=5;
样例输出
3 4 5
dict_nums = {
'a': 0, 'b': 0, 'c': 0}
list1 = [s for s in input().strip().split(';') if s]
# print(list1)
for s in list1:
var, value = s.split(':=')
if value in dict_nums.keys():
dict_nums[var] = dict_nums[value]
else:
dict_nums[var] = value
print(' '.join(map(str, list(dict_nums.values()))))
2. 禽兽的传染病
题目描述
禽兽患传染病了。一个禽兽会每轮传染 x 个禽兽。试问 n 轮传染后有多少禽兽被传染?
(提示:保证 x,n 以及答案都在 64 位无符号整数的表示范围内。)
输入格式
两个非负整数 x 和 n。
输出格式
一个整数,即被传染的禽兽数。
样例输入
10 2
样例输出
121
def f(x, n):
"""
第一轮:初始:1 传染1:x ==> x+1(新被传染的加上上一轮的)
第二轮:初始:x+1 传染1:x ==> (x+1) * x + (x + 1)
第三轮:初始:(x+1) * x + (x + 1) ==> ((x+1) * x + (x + 1)) * x + ((x+1) * x + (x + 1))
...
"""
if n == 1:
return x + 1
else:
return f(x, n - 1) * (x + 1)
x, n = map(int, input().strip().split())
print(f(x, n))
3. 三子棋Ⅰ
题目描述
小a和uim喜欢互相切磋三子棋。三子棋大家都玩过是吗?
由于小a比较愚蠢,uim总是让他先。
我们用9个数字表示棋盘位置:
123
456
789
所有的棋谱都是已经结束的棋局,要么一方获胜,要么平局。今天,他们下了一下午的棋,小a为了提高技术,录下了很多棋谱。他想知道,一盘棋结束时,到底是谁赢。
输入格式
一行,一串数字,表示落子的地点。小a总是先下
输出格式
一行,如果小a赢,输出“xiaoa wins.”。如果uim赢,输出“uim wins.”。如果平局,输出“drew.”
样例输入 #1
5237649
样例输出 #1
xiaoa wins.
样例输入 #2
539128647
样例输出 #2
drew.
def check(list1):
"""
能赢的几种情况:
[1, 2, 3],
[1, 4, 7],
[1, 5, 9],
[2, 5, 8],
[3, 6, 9],
[3, 5, 7],
[4, 5, 6],
[7, 8, 9]
"""
flag = False
if 1 in list1:
if (2 in list1 and 3 in list1) or (4 in list1 and 7 in list1) or (5 in list1 and 9 in list1):
flag = True
if 2 <