近日,在蓝桥杯做了一道题,它是一道初级的入门题。正因为它是入门题,而且我没有立即做出来,所以有了很深的感悟。它要求计算第n和斐波那契数对10007取模的结果。我最初的想法是把它分步骤解决,先解决第n个斐波那契数,再对10007取模,但这样做发现数太大了,都超过了ll类型的数。于是我考虑的是将它的每一位用字符表示,写一些用字符进行加减,取模操作的函数。但发现取模那个很难想,想了许久都没有结果。随后,我又试着换种思路,把大整数的每四位用整数表示。可这样做又感觉太复杂,它可是蓝桥杯的入门题,难不成我还没入门?后来,我看了蓝桥杯老师的模拟题讲解,前面部分的题很简单啊,就是送分题。此时,我才突然顿悟,那道入门题只要求计算最后取模的结果,中间过程没要求。于是,就边计算斐波那契数边取模,短短十几行的代码就搞定,还真是入门题!不过,这给了我一个启发,就是,我们大脑思考问题容易串行思考,一步一步的来,直到解决整个问题。但更多时候,可能一个大问题看似由很多小问题组成,实则很多小问题都并不需要解决,也就是说我们应该就最终的问题来综合性思考解决方案,对于由问题引发的中间问题,可能并不需要解决。可是,很多时候,直接想解决最终问题可能很难有思路,于是就需要拆解它,分成一个个小问题,同时,我们需要注意到的是,并不一定所有小问题都要解决,而小问题之间并不一定完全相互独立,有时有些小问题合在一起解决可能更容易。问题来啦,那应该拆解问题逐一解决还是整合问题一并解决呢?这可能就需要我们积累经验了。