江寒按了一下电脑电源按钮,很快显示器上出现了NOILinux的启动界面。
这就必须“赞”一下了,往年都是用虚拟机进入Linux的,今年改成原生系统了。
这样一来,系统的启动和运行速度,起码要提高一倍以上。
实际上,有些省份目前还是Windows和虚拟机Linux并行,选手自行选择趁手的操作系统。
合江省这次竟然走在了全国前列,率先淘汰了大众熟悉的Windows……
足足等了三十多秒,终于进入了Linux桌面。
江寒先把桌面分辨率等环境参数,调整成了最顺手的设置。
然后按下【Alt+Ctrl+T】,调出终端,用“ls”命令查看了一下。
赛组委果然没有预先建立比赛文件夹,这样就只能自己动手了。
江寒按照监考教师下发的参赛说明,使用“mkdir”命令建立了一个文件夹,命名为【Jianghan】。
接下来,他又在终端中输入【vimtest.cpp】,启动了代码编辑器vim的IDE界面,然后按“I”键进入插入模式。
这样就可以键入代码了。
这次比赛仍然可以在c、c++、pascal三种程序设计语言中任选一款。
三种语言各有特点,c语言执行效率最高,pascal语法简单,但稍嫌刻板,好处是不容易犯低级错误,c++则更加适合复杂程序的设计。
江寒毫不犹豫地选择了最为熟悉的c++。
首先完成一个测试代码。
功能很简单,就是在标准的“helloworld”基础上,增加了一个从1加到100的循环程序,然后将结果输出到屏幕上。
江寒编辑完代码,稍微检查了一遍,排除了可能存在的语法错误,然后按“ESC”键,退出插入模式,再输入“WQ”存盘退出。
接下来,回到终端中,输入命令行指令:【g++test.cpp-otest】,回车。
这样,g++编译器就开始工作,将test.cpp编译成了可执行文件test。
编译过程中,如果有错误,就会提示出来。
但江寒这个测试程序十分简单,并没有犯任何小错误,一次就通过了编译。
接下来,就可以输入【./test】,来执行生成的可执行文件了。
稍微观察了一下,确认程序可以正常运行。
这样系统的检测和调整就初步完成。
接下来,进行一些进阶的设置。
江寒用【vim~/.vimrc】命令,再次打开vim界面,并加载了配置文件vimrc。
然后修改了一下其中的几个参数,将vim编辑器的操作模式,调整成了最顺手的状态。
接下来,在自己的比赛文件夹中,创建两个文本文件:test.i.out。
再修改测试代码,为其增加文件输入输出功能,并添加对头文件的引用,使其能操作test.i.out。
再次调试正确后,就得到了一份c++模板代码。
一会儿比赛正式开始,只需要在模板的基础上,进行一些修改和填补就可以了。
这些都搞定之后,还剩下大约15分钟时间,比赛才能正式开始。
江寒在vim中随便输入了几个小程序段,快速排序、堆排序、二分查找……进行赛前热手,以提升手感。
8点20分,监考人员通知大家登陆ftp服务器,用公用账号和密码下载试题压缩包。
江寒只用了30秒,就把试题压缩包下载到了自己的桌面上,并解压到了一个文件夹中。
随后依次点开3道试题的说明文档,认真查看了起来。
只用了10分钟,他就将3道题都看完一遍,并理清了解题思路。
然后按照题目难度,排了个序。
巧的是,三道题的编号和难度系数一一对应。
当然这是对于他来说,换个人看,很可能觉得第2题才是最难的……
江寒在【Jianghan】文件夹里,创建了三个子文件夹,按照要求,分别命名为【vigenere】、【game】和【drive】,一会儿为各个题目编写的代码,就分别存放于对应的文件夹中。
江寒先看第一题:Vigenère密码。
这是一个密码学问题,加密规则很简单。
密钥k是一个字符串,K=K1K2K3……Kn,当明文M=M1M2M3……Mn时,加密后的密文为C=C1C2C3……,Ci=Mi⊕Ki。
⊕是一个规则表,26行,26列,每一行代表一种字母替换方式,第一行从A到Z顺序排列,第i+1行是第i行循环左移1个字符得到。