Codeforces April Fools Day Contest 2020 Writeups(迫真CTF)
愚人节比赛写作ICPC赛制读作CTF。
这可能有点违背赛德我们真的当成CTF组队参加了。解决了ABCDEG题。这里再次感谢组友ssttkkl、TML_104、宫藤明的参与。

反正又不rate

A. Is it rated?

这题没有题面,是的,没有题面。但其实我们只需要回答它题目标题问的就好。
手贱第一时间趁着大家都卡的时候交了个复读输入结果WA了
exp:
print('No')

B. Limericks

这题让我做我是拒绝的毕竟我英语不好。在约30min时得到ACM群asdkjc前辈的hint说是质因数分解(众所周知ACM选手普遍适合打CTF),在和组友讨论了一下复杂度问题以后率先写出暴力的公公先A掉了,这里我是去百度找了个质数表。
exp:


C. ...And after happily lived ever they

没给什么题面,按数据范围推断应该和二进制有关。
转了一下ACM群Maxzz前辈的hint,然后104做出来了。
这题是104给的题解,说C的标题是被打乱的一句话。要根据输入数字的二进制来确定选中的单词然后将他们正确顺序的二进制数输出。

画图说话的话就是这样的:

exp:


D. Again?

104首先猜是判断奇偶,然后ss先写了一个交了上去还真是判断奇偶(
我是只抓最后一位算的
exp:


E. Jordan Smiley

题目大意:给定坐标判断是在图片围起来的封闭区域内还是在外。
104给了个想法:用颜料桶泼一下图形,后面的工作就是我和公公接手了。

首先我们对泼过的图片用PIL库打开,之后我的处理方法和公公的略有不同:
公公用的是getpixel方法读点,我是图片灰度整个转成numpy.array对象然后才开始统计,我的exp1是根据图片大小(963*964)以及数据范围大小(64*64)计算区段长度向下取整为15,然后取偏移量9(交了偏移量为1和为5的都WA了,公公在这题因为取了1后来又没有调整所以没过)进行采样,打出01表。
exp1:

得到差不多这样的01表:

然后把这个丢进exp2里面进行回答:

赛后发现这个偏移量真的得小心选取,因为原题目里面给的是线圈起来的框,不是正经的黑白格子,如果偏移量小于线的宽度就会造成采样错误。

F. Elementary!

标题误导性很大,我和104都被误导为解题与电视剧Elementary有关,遂去wiki搜了一下提供的8个词,发现no组里面有1个单词在正文出现,1个在注解中出现,yes组全部出现在正文中,然后我抛弃了爬取wiki页面的想法去用类似sql盲注的方式猜解数据(-6的来源)。
赛后Maxzz前辈告诉我是去找元素周期表,如果这个给定的单词全部由元素构成就是yes否则是no(原来用的是element元素的意思吗?菜 我 菜)。
百度了一圈没找到现成的元素周期简写表,写了个小爬虫去爬百度百科的网页发现少了一个元素然后肉眼对了3遍没找出来,无奈去wiki右键网页另存为到本地然后直接用re匹配去处理文档,对拍的时候发现百度百科页面上Sg元素的g这个字符在S字符所在标签的子标签里面,怪不得没爬出来(我爬)。

最终搞到了118个元素的周期表,exp如下:


G. Lingua Romana

写到这题的时候,先跟我喊一句:
ssttkkl牛逼!
题目给了输入和一段疑似拉丁文的代码及其输出,现要求你用自己的语言把题目所示算法表示一遍。
00:07:39 善于搜索的公公找到了题目所示语言是Perl的换皮(?)

00:14:42 公公给出了源链接 https://metacpan.org/pod/release/DCONWAY/Lingua-Romana-Perligata-0.50/lib/Lingua/Romana/Perligata.pm
同时ssttkkl开始介入调查
00:24:40 ssttkkl翻译成功,但是由于组内忙于F和H,没有引起重视。
aresult = sqrt(abs(val))
bresult = 5 * (val ** 3)
result = aresult + bresult
00:33:04 ssttkkl在组内共享了他的代码,我们在最后一分钟内交了G题。
exp:


H. It's showtime

题目大意:只能使用给定的未知语言UnknownX解决这个问题:计算输入n的二次阶乘,对它与给定模数进行求模。
00:35:00结束的比赛,104在00:31:11找到了线索但是来不及了。https://zhuanlan.zhihu.com/p/44095546
难点在于理解并运用这么个语言,我们组在比赛中没有做出来。
赛后我根据github上面找到的对应项目和他给的实例花了差不多50分钟才解决,这种语言只支持最多16bit signed int的定义,比我以前写文言的体验差到不知道哪里去了。
冗长的代码抄着让人手累,满屏的脏话看着让人心烦
exp:
