闪瞬文学>科幻>黑客传说 > 第96章 字母锁(上)
    第96章字母锁(上)

    许毅接到周思筠电话的时候已经身在c市第一中学了,h省的选拔赛在将在这里举行。挂了周思筠的电话之后,许毅就将电话关机了。他知道这次肯定是避不过去,为了将影响减小到最小,他才对周思筠那么交待,他可不想让别人对自己产生兴趣,尤其是搞情报的人。

    他已经打定主意,尽量装成性格内向,不爱说话,平时就喜欢编程的形象。然后然后就是走一步算一步了。

    黑客不喜欢政治,但政治往往会找上黑客。

    “大家不用紧张,就像平时那样就行,一定要看清楚试题再下笔,知道吗,不要由于粗心而丢分”首先要进行的是笔试,笔试之前,柳叶在仔细交待相关细节。

    “知道了!”几个人都很有自信地回答。

    笔试部分的试题很简单,有很多都是要记忆的东西,例如计算机的一些基本部件以及他们的具体功能等。稍难一点的就是一些融合了一些数学和计算机知识的应用题了。例如有这样的一个题目:

    处理器a每秒处理的指令时处理器b的2倍。某一特定程序p分别编译为处理器a和处理器b的指令,编译结果处理器a的指令数是处理器b的4倍。已知程序p在处理器a上执行需要1个小时,那么在输入相同的情况下,程序p在处理器b上执行需要()小时。

    a.4b.2c.1d.1/2e.1/4

    最后的大题目有几个问答题和一个阅读程序题,这些题目对许毅来说自然是一点问题都没有。他很快就搞定了,懒得检查,就出来了。柳叶见到之后,把他好说了一通,不过许毅仍然是一副无所谓的样子。

    上机编程,软件环境为debianlinux,编译器有freepascal,也有gcc,也就是说编程语言可以从pascal和c语言这两种语言中任选一种,许毅选的是他拿手的c语言。

    登陆用户名和密码都是guest,开始参赛选手可以事先熟悉一下机器操作。许毅上来后所做的第一件事就是查看计算机的网络连接。要是这些机器组成了一个局域网,如果有人想作弊的话,那就容易了。不是给别人传答案,而是用自己的机器去攻击别人,让他们的系统出问题不过比赛组织人员好像已经考虑到这个问题,所有的机器都是独立的,网络连接断开,连ip都没有。

    无趣。许毅无聊地打了个呵欠。然后开始看比赛的一些具体要求。因为是比赛,所有步骤都规定得一清二楚,什么“试题名称缩写”、“保存目录路径”。“输入输出文件名”等等等等一大堆的规定。要是不按照里面的来,就算你做得再好也是白搭。

    终于看完了那一大篇的说明和注意事项,许毅便开始看题。试题的通常格式是“题目描述”,然后是“输入文件”,“输出文件”,最后还会给出几个样例数据。总共有四个大题,每题对应一个源程序,源程序要能够符合题中给出的样例,当然,也得符合其他合法数据。另外还对程序的运行时间和效率有规定。

    这几个题目对许毅来说实在是没有任何挑战,很快他就做到了最后一题:无聊的排序

    题目为:你弟弟有一项家庭作业需要你帮助完成。老师给了他一列数,需要他把这些数按升序排列。你可以每次交换两个数的位置,而一次交换的代价被定义成被交换的两个数的和。写一个程序,用最小的交换代价和来帮助弟弟完成这项无聊的排序工作。

    输入:第一行为一个数n(n

    输出:输出一个数,为最小的交换代价和

    稍看了一眼,许毅就知道本题可以抽象为:把一列数从初始状态变成目标状态,即完成一个置换。根据群论知识,置换可以分解为s个不相交的循环的乘积。显然,由于每次只有被交换两个数的位置改变,所以要想改变一个数的位置,只能通过交换完成,而不能像插入排序一样,可以借助其他数来完成,即各个循环是相互独立的,所以应该依次完成每个循环。为了得到尽量少的交换代价,在每个循环中较好的方法是让循环中最小元素或全局最小元素参加所有的交换。至于用循环内的最小元素还是用全局中的最小元素,就要比较哪个交换代价更小了。将它作为压轴题相信对高中生或初中生来说难度应该很大吧,可在许毅面前已经变得和“hello,orld”程序那样容易。

    在脑海中想好怎么编写,许毅调出gcc,一口气就将这个算法给编写出来了。把测试数据代入试了几次,改动了几个小错误,大功告成!看了看周围的同学,有的在奋力输入,有的则在仔细读题,每个人都是一脸认真严肃的样子。再侧了身子看了看前面两排的黎姿姿,发现她在用笔在稿纸上画着什么。而她不远处的李帅则有些挠头搔脑的,好像很不安份的样子。

    呵呵,看你这关怎么过。许毅正东张西望,结果被监考老师看到了,她走了过来。

    “同学,请不要到处乱看。”

    得,她还以为我想作弊呢。