题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
给定数列 1, 1, 1, 3, 5, 9, 17, ⋯,从第 4 项开始,每项都是前 3 项的和。
求第 20190324 项的最后 4 位数字。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
我的解题思路:
直接上来就是暴力求解,直接求出第20190324项的数,在想办法求出后四项。怎么求出后四项呢?
我想的是将int转为string,在求后四项,但是感觉好麻烦,于是我就去优快云了。
我看到了一位博主,他用MOD10000,我顿时心中惊叹,对哦,妙啊,我怎么没想到。
好的,我原以为问题就这么完美的解决了,可是没完,答案报错了,结果如下:
于是乎,我又看了那位博主的求解过程,好家伙,人家是在循环里MOD了。这样就可以避免溢出。
我一开始还没搞懂是为啥,毕竟我直接求第20190423项数的结果是856830691,而int型最大可以表示整数2147483647,我觉得没溢出。后来问了一个同学,他就让我输出100项试试。我一输,好家伙,-1081317309,溢出了。
通过这题,我学习到了以下几点:
1)如何求一个整数的后四位数,那就是MOD
2)注意考虑暴力求解会不会溢出,以及如何检测溢出,可以通过输出较小的项数判断是否溢出。