作者:素光同
江逾白站到讲台正中央,用英语复述他记忆中的课文。他讲出来的句子,和课本完全不同,台下学生窃窃私语,英语老师插了一句话:“这样背书也行吧。你们把课文融会贯通,再用自己的词汇表达出来,活学活用,锻炼自己的英语理解和运用能力。”
江逾白有惊无险地返回座位。他刚坐下来不久,前排的汤婷婷回头问道:“江逾白,林知夏,你们俩都没背书吧?”
林知夏小声承认:“是的。”
汤婷婷见她脸色微红,便问:“你有什么不好意思的?”
“早读课应该看书,”林知夏说,“不应该和同桌聊天。”
可是,和同桌聊天,真的很轻松。
林知夏之所以把舅舅的事情告诉江逾白,是因为,她想和好朋友分享她的秘密。林知夏只会把秘密告诉江逾白一个人,因为他是她唯一的最好的朋友。
他即将升入一所国际高中。
这很正常,每个人都有自己的规划。
他们能在小学和初中阶段作为同桌共处四年,这已经是一件让林知夏感到庆幸的事情。而在下个阶段,哪怕她和江逾白走上截然不同的道路,她依然会把他放在“最重要朋友”的位置上。
*
初三上学期,竞赛班的部分同学还在为全国初中数学联赛而努力,林知夏却在准备一场名为“International High School Programming Competition”的比赛,中文可翻译为“国际高中生编程竞赛”,通常被简写为IHSPC——这是一场盛大的国际赛事,每个国家都可以派出许多支队伍,每个队伍内必须有三名学生。
今年的比赛在俄罗斯的首都莫斯科举行。
十二月底,莫斯科的气温偏低,天空也是雾蒙蒙的。林知夏刚从机场出来,就感受到了一阵汹涌的寒潮。她拖着行李箱,跑到带队老师的身边,老师问她:“有信心拿金牌吗?”
“有!”林知夏回答。
话虽这么说……
当她深入俄罗斯的腹地,来到了俄罗斯选手的老巢,她心里有些没底。
林知夏知道,在国际赛场上,俄罗斯、日本、韩国、美国、中国这几个国家厮杀得十分激烈。近几年来,大学编程竞赛的冠军多半属于俄罗斯。
林知夏花了一年的时间去学习编程。她的数学功底非常扎实,还能把《数据结构》和相关算法倒背如流,因此她成功在省队中脱颖而出。
然而,IHSPC不仅考验了选手的数学逻辑思维,还要求选手具备一定程度的编程技巧。
林知夏寄希望于她的队友。
这一次,与林知夏一同出战的队友,是省立一中的高三年级学长,也是信息学科竞赛的佼佼者。
其中一位队友姓蔡。蔡姓队友小小年纪,就有很多白头发,于是大家都叫他“老蔡”。
另一位队友姓粱。他长相比较年轻,于是大家都叫他“小粱”。
IHSPC比赛开始之前,老蔡自我解嘲道:“我们这一组的三个人,名字里带着‘蔡’、‘粱’、‘夏’三个字,我们又菜,又凉,又瞎,齐活了。”
林知夏被老蔡的说法震惊。
更令她的震惊的是,他们完全被东欧选手包围了。
他们的座位附近是俄罗斯队、白俄罗斯队、爱沙尼亚队,拉脱维亚队。这些队伍里的每一位同学都有一种很稳的气质,都让林知夏联想起了罗马尼亚大师赛上的Alexandrov。
林知夏坐直身体,严阵以待。
在林知夏的队伍里,小梁的编程水平最高。小梁负责编写程序。而林知夏的数学功底最强。她负责分析题目。
他们顺利解决了前三题,却在第四题上遇到了障碍。这道题设置了一个以2为底的嵌套指数函数,函数已经被运算了M次,得到一个数值N,现给定一个X作为输入,求N对X取模后的结果。
这道题出得非常巧妙,老蔡与林知夏持有相反意见。
林知夏坚持使用递归降幂公式直到模数等于1。老蔡认为,降幂不是这道题的关键点。老蔡曾经见过一道类似的题目,但他突然想不起来了。他与林知夏小声争论,小梁插了一句话:“老蔡,小林,到底怎么做?你们快给个准信。”
林知夏拽过键盘:“抓紧时间,按我的方法来。”
“等等,”老蔡制止道,“你提交一次错误代码,我们前几题就白忙活了。”
是的,IHSPC的比赛规则十分苛刻。
选手答对了,不一定能得分,选手答错了,一定会被扣分。
老蔡这么一说完,林知夏的动作变得迟钝。她重新梳理一遍逻辑,又在脑中运行程序。老蔡暂时把第四题放到了一边,开始和小梁商量第五题的解决办法。
林知夏低头扫视第五题,又想起竞赛老师的叮嘱:IHSPC比赛的题目经常会给选手挖坑。很多时候,你以为你做出来了,其实你没有。你以为你是正确答案,其实你漏掉了关键信息。IHSPC总是隐藏着一些特定的套路。
如果这是一场个人赛,林知夏可以随心所欲地答题。但她身在团体中,她必须小心谨慎。她询问老蔡对于第四题的看法,而老蔡正在敲击键盘,编写第五题的答案。
林知夏问他:“第四题不用费马欧拉定理,还能用什么方法?”
老蔡目光专注地盯着屏幕:“你等我把第五题写完。”
“第五题你想怎么做?”林知夏又问他。
老蔡戴着一副金框眼镜,脸型圆润如银盘,通身显出一种富贵的气派。老蔡不像是一个普通的理工科书呆子,他身上蛮有灵气——这是小梁心中对老蔡的评价。
小梁和老蔡作为信息学科竞赛的队友,已经合作两年多了。原本,他们还有另一个队友,但是,那位队友的编程实力偏弱,教练就临时把林知夏调进了老蔡的队伍里,让林知夏代表省立一中出战今年的国际高中生编程竞赛。
老蔡与林知夏的合作并不愉快。
林知夏的不断追问,打断了老蔡的思路。老蔡深深地叹了一口气,林知夏还在观察他:“你的第十七行代码,好像有个手误。这里不应该让二进制字符串左移两位……”
老蔡说:“我故意这么写的。”
小梁也说:“小林,你让老蔡写完。”
林知夏察觉气氛不对。她立刻闭嘴,不敢吱声。
这场比赛十分漫长,将从上午十一点持续到下午四点。到了中午一点左右,林知夏就很困了。她强打精神,盯着队友敲键盘,光标在屏幕上不断移动,她暗暗地想,C++真是简洁快速的语言,虽然固定的静态结构是C++最大的缺点,但是她依然喜欢C++,因为C++是计算机底层架构的一把利器。
第50章 滑铁卢
时间一分一秒地流逝,老蔡的手指悬停在电脑键盘之上。
老蔡是个细心的人。他写程序时,追求精益求精。他偏过头和小梁讨论,要如何提高程序的运行效率。林知夏找不到插话的时机,只能坐在座位上,静静地听着老蔡和小梁谈得热火朝天。
老蔡感觉自己把林知夏排挤到了队伍之外。他有些内疚。他讲了个笑话,活跃气氛,还让林知夏帮他检查一遍代码。
林知夏扫眼一看,确认老蔡的程序没有问题。
此前,林知夏曾经指出老蔡的“二进制字符串不该左移两位”。不过,现在看来,老蔡的思路是正确的。林知夏向他道歉:“对不起,我刚才说错了,我没想到你会这么写。你的解题方法和我完全不同。”
老蔡调整了一下座椅的位置。他一边提交代码,一边对林知夏说:“赶紧的,我们来研究第六题。第六题是代数几何……”
老蔡一句话没说完,小梁的手指轻点桌子:“第五题错了。”
老蔡和林知夏一起抬头,齐刷刷地望向电脑显示屏。
IHSPC是一场残酷而严格的比赛,每个队伍的分数都是实时更新的,也是公开透明的。参赛选手上传某一道题的代码,后台程序就会立刻判定得分。
对与错,得分与扣分,全在一念之间,也在一瞬之间。
老蔡感受到了巨大的压力。他屏住呼吸,嗓音沙哑:“我们第五题写得不对?”
第五题爆出一个大错,倒扣7分,省立一中的总体排名一下子从全场第六名跌落到了全场第十七名。
截至目前,俄罗斯队和韩国队遥遥领先,中国的几支参赛队伍紧随其后。省立一中不占任何优势,林知夏心弦紧绷,急忙查看后台的反馈。她说:“你用二进制字符串来表示第五题的集合,左移两位代表乘4,可是你少写了一种情况……我也有错,我没有仔细阅读你的每一行代码。”
老蔡紧紧地皱着眉头,脸上阴霾不散。他握着鼠标,刷新页面,比赛排名再度更新——省立一中沦为第十九位。
林知夏每次考试都是年级第一,她从没见过“第十九名”的成绩。她有点懵了。老蔡还在修改第五题。小梁安抚道:“老蔡,别急,还有机会。”
老蔡第二次提交第五题,再度被判定为“Error”。
这个“Error”,就是“错误”的意思,省立一中又被扣了4分,整体排名连续下滑。
“真要命啊。”老蔡感慨道。
林知夏挡开老蔡的手,直接夺过键盘。她在老蔡的程序基础上,新增了一个变量。她点击鼠标左键,按下绿色确认按钮。可是,她并没有力挽狂澜。“Error”重复出现,“省立一中”的名次沉落到了第四十三位。
小梁不留情面地批评道:“林知夏,你交得太快了啊,我们没看清你的写法。”
这时候,林知夏才把试题拿出来,重新阅读第五题的题干。她和队友们说:“我知道了,我们都把这道题记错了。两个星期前,老师带我们训练的时候,给我们出过一道题,那道题和这个第五题有百分之八十的相似度,但是限定条件完全不同……”
林知夏还没说完,小梁和老蔡已经在合力修改。
他们不约而同地被激发了赌徒心态。
第五题让他们输得越惨,他们越要尝试,直到把第五题答对为止。
林知夏指着屏幕,建议道:“把这个函数删掉吧,它是冗余代码。”
所谓的“冗余代码”,指的是没有必要存在的代码。
小梁的手指在键盘上飞速跃动,可他并没有理睬林知夏。小梁和老蔡低头耳语一阵,认真交换了意见,再次提交第五题的答案——这一次,他们终于成功了。
偌大的比赛场馆内,充满了各种语言的谈话声。
对面的俄罗斯队正在谈笑风生,他们目前排名全场第一。隔壁的爱沙尼亚队神情肃穆,三名队友一边画图,一边探讨着第六题。
宽敞的落地窗之外,飘着一片湿漉漉的雾气。窗户上沾着朦胧的水珠,天空越发黯淡灰白。远处的楼房成排而立,映在暗色调的背景里,就像一副意境深远的油画。
林知夏走神了。
林知夏今年才拥有了第一台电脑,而老蔡和小梁从小学习编程。小梁的爸爸和妈妈都是省城一家电脑公司的程序员,可以说是出身于“程序员世家”。或许,林知夏应该调整自己的状态,努力地做好辅助工作。
经过一番深思熟虑,林知夏点了一下头。她拖动椅子,靠近老蔡。
老蔡打开了本次比赛的主页面。他看见,省立一中排在第四十九名,后面的队伍还有较大的上升趋势,照这个情况发展下去,别说金牌了,铜牌都没希望。
林知夏困惑地问:“为什么我们越来越靠后了?”
老蔡说:“俄罗斯和美国都派了二十几支队伍。你看美国这几所高中,全在前面,就连英国学校都反超了我们……”
林知夏连忙说:“我知道第四题要怎么做。只要我们把第四题答对了,省立一中的分数就会上来的!”
“第四题怎么做?”老蔡反问她,“还是刚才那个办法?”
林知夏非常确定:“是的。”
老蔡推高了鼻梁上的眼镜。他依旧认为林知夏的做法有问题,就像他写错了第五题一样。他觉得,林知夏对第四题的观感有误。他建议林知夏先在草稿纸上创造一组数据,再把这组数据代入她的程序,验算她的方法能否成功。
“我在自己的脑子里验算过了。”林知夏诚实地说。
老蔡却说:“你写下来,多写几页纸,我要按步骤问你。你刚才提交第五题,没让我和小梁检查。你出错了,队伍丢了四分。”
林知夏伸手搭上键盘:“最开始,我以为,第五题是我们之前遇到过的套路题……你和我犯了一样的错。这就是‘三人成虎’的道理——三个人确认了同一件事,无论这件事是真是假,他们的第一反应都是随大流。”
老蔡右手抚着键盘。他本来在思考第六题。而林知夏的这段话,让他莫名烦躁起来。他把眼镜摘下来,放在桌上,抬起手掌,猛地搓了搓脸。
林知夏的说辞一套一套的,把老蔡说得心烦意乱。
IHSPC的赛场上,最忌讳的事情,就是队友们相互指责——老蔡接受了两年多的训练,他和小梁都很清楚这个规矩。然而,林知夏似乎不明白,或者,她就是觉得把事实说出来也没什么要紧的。