洛谷基础题练习12

本文解析了包括语句解析、传染病模拟、三子棋胜负判断、手机按键计数、表达式括号匹配等在内的九个编程练习题,通过具体示例展示了如何解决这些问题。

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 <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里逆天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值