今年的题量与往年一样。都是五道题。
第1题是近十三届比赛中最难的。往年的第一题,往往就是求一下两个数的积,或者字符串原样输出。而今年的第1题,则需要求开方和平方,难度明显增大了很多。难度相当于往年的第二题。
第2题的核心在于求回文串。需要写一个for或while循环,然后定义两个位置,一个从前往中间,一个从后往中间,判断字符是否相同。这题也不算特别简单。
第3题,可以定义一个结构体,然后用中的sort函数进行排序。因为比较的是结构体,需要显式定义sort的第三个参数cmp。有些小朋友可能没接触过sort对结构体进行排序的情况,那只能自己写一个冒泡之类的排序算法了。所以这题也不简单。
第4题,求进制转换。通常而言,竞赛题很少会见到做过的原题,但这题例外。这道题是没法修改题目的。所以有些小朋友可能之前做过这道题。但是,因为这个算法有点复杂,之前做过不代表在考场里当场能做出来。只有算法基础比较扎实的小朋友才能在做过的前提下当场做出来。
第5题,窄一个看,算法很复杂,可能需要整型数组来存储大的数据。但是若仔细分析,发现是有数学规律的。如果发现了数学规律,则代码会变得很简单。这也是这道题的精妙之处。
这里需要再次强调一下数学。中小学阶段所谓的程序设计竞赛,实际上指的就是算法竞赛。而算法,就是计算方法的简称。对于每一道题,第一步其实就是想数学思路,第二步是在数学思路的基础上用编程语言(C或C++等)把思路写成代码并运行出结果。
今年的五题设计得还不错。难度逐题递增。今年的最后两题,比去年的最后两题稍微简单一点,但比其他年份的最后两题要难。但是第一题,却是近十三年来最难的。整体而言,今年的五题是历届最难的。可以推测,今年会有不少小朋友,一道题都做不出来。
随着学习信息学的小学生不断增多,似乎可以预测信息学竞赛题变难是一个趋势。