竞赛总览

CSDN 编程竞赛五十九期:比赛详情 (csdn.net)

吐槽:在线测评系统改成必须提交前一题之后才能看到下一题了,本就难用的测评系统直接雪上加霜。恰好本次竞赛的第一题又是格式处理,想直接跳过还不行,体验很差。

竞赛题解

题目1、坏掉的打字机

贝博士发明了一种能够自动输出数字并求和的打字机,但这台打字机出了一些故障,它除了输出数字以外还会随机地输出其他字符。艾小姐让贝博士不要着急,她写了一段程序,能让这台打字机即使在这样的情况下也能输出正确答案。那么,你知道艾小姐的程序是怎么写的吗?

测评系统上面点下一题,屏幕上方中间位置就弹出来几个toast一直转圈。

再加上这道题目描述十分玄学,搞了一小时还没搞定……

利用Python可以查看输入数据:

n = input ()
print (n)
1/0

将输入数据读到变量中,然后输出,再利用报错强制抛出输入数据,#滑稽。

题目给出的测试数据:10.20.5.9.9.-8.22.,40.53,可以分割出10.20(省略小数点后的0,实际为10.2)、5.9、9.0、-8.22、40.53。

题目要求忽略小数点在数据开头的情况,例如.9应视为9.0,而不是0.9,由于多出了这个条件,C的scanf函数就失灵了。

正确的做法是正则表达式,但C的正则表达式在测评系统中总是报错,又不熟悉Python的正则表达式模块,最终放弃了。

题目2、布尔零点计数

使一个布尔表达式的值为零的取值组合称为该表达式的一个布尔零点。比如,布尔表达式A+B+C就只有一个零点,就是(A,B,C)的取值组合(0,0,0)。而布尔表达式A*B*C就有不止一个零点, (A,B,C)的取值组合为(0,0,1)或(1,1,0),都是它的零点。其中A、B、C都是布尔变量,而布尔变量只能取值0或1。布尔表达式可以把布尔变量去掉而只保留运算符,称为布尔表达式的简写。如:+*(+)就是布尔表达式A*(B+C)的简写。现在用|表示或运算,它有如下的真值表:0|0=0、0|1=1、1|0=1、1|1=1。布尔表达式的优先级是:乘法运算优先于加法运算和或运算,但小括号可以改变优先级为“小括号中的内容优先”。现给出只包含乘法运算和或运算的布尔表达式的简写,求表达式的零点计数。

由于本次竞赛的测评系统改为提交前一题才能看到下一题,到了这个题目的时候已经剩多少时间了,果断骗分水过。

06-23 14:05