“有!”林知夏回答。
话虽这么说……
当她深入俄罗斯的腹地,来到了俄罗斯选手的老巢,她心里有些没底。
林知夏知道,在国际赛场上,俄罗斯、日本、韩国、美国、中国这几个国家厮杀得十分激烈。近几年来,大学编程竞赛的冠军多半属于俄罗斯。
林知夏花了一年的时间去学习编程。她的数学功底非常扎实,还能把《数据结构》和相关算法倒背如流,因此她成功在省队中脱颖而出。
然而,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的赛场上,最忌讳的事情,就是队友们相互指责——老蔡接受了两年多的训练,他和小梁都很清楚这个规矩。然而,林知夏似乎不明白,或者,她就是觉得把事实说出来也没什么要紧的。
老蔡扶住额头:“林知夏,你今年多大了?”
林知夏往后挪了一寸距离:“我今年十二岁……虚岁十三岁,马上就十四岁了。”
老蔡指了指自己,又指了指小梁:“我们比你大好几岁。”
“我们的灵魂都是平等的,”林知夏喃喃自语,“无论我是十二岁,还是九十二岁,我都会相同的态度来对待你。”
小梁“啧”了一声:“你今年是十二岁,不是九十二岁……”
林知夏记起她的正事:“时间好紧张,我可以先用电脑写第四题吗?”
老蔡忍无可忍,爆发道:“你把步骤写下来,不行吗?答错了会扣分。你是人,不是神,你犯错了,队友就要给你收拾烂摊子,你十二岁也该懂事了?”
林知夏缓了两秒钟,与他针锋相对道:“你能不能不要攻击我的年龄?我确实会犯错,每个人都会犯错,只要我们把错误改正,那段经历就是有意义的。”
老蔡崩溃道:“你别跟我扯鸡汤。”
林知夏耐着性子解释道:“我可以把第四题的步骤写下来,但是第四题是递归指数函数,我要用数论的方法写,再套用费马欧拉定理。我看到现在没人在用键盘,我才提议让我来写程序,然后我借助代码,再和你们详细解释。这对你们来说,会比我手写的内容更清楚。我也可以在纸上写完程序代码,再誊抄到编译器里……只是这样一来,你可能没办法检查我的每一个步骤,因为代码注定是简洁又跳跃的,你不能凭借肉眼去Debug。”
“Debug”是编程用语,指的是“解决程序故障”。
老蔡没有接话。他的视线聚焦于显示屏。
省立一中的排名仍然在下滑。还有一个非洲国家队,升到了省立一中的前一位。
非洲队?
在老蔡的印象中,非洲是一块不发达的地域。他看过非洲一座城市的纪录片——那座城市的外围就是非洲草原,狮子、羚羊和斑马快乐地奔跑在城市郊区,给他带来了极大的震撼。
他,竟然被非洲队,超过了。
老蔡甚至不确定,非洲队的学生们,日常生活安不安全,会不会被狮子追逐,被豹子戏弄,被大象威胁。
而他,在省立一中好吃好喝地接受训练,享受着食堂大厨的悉心款待,竟然比不上一支来自非洲的队伍。
老蔡的胸口生出一团闷气,不上不下,阻塞肺管。他缓声陈述道:“你拿了罗马尼亚大师赛的金牌,还来参加信息学科的竞赛,老师非要把你塞进我们组,挤掉了我们原来的队友。我和那个被挤掉的人,是中学五年的好朋友。老师们非说你聪明,你实力强,你能干,你有天赋。行,好吧,我同意你入队。你还是给我们扣了四分,这就是你的实力?”