问题描述:
给定数列1,1,1,3,5,9,17,…从第四项开始,每项都是前三项的和。求第20190324项的最后四位数。
答案提交:这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:4659
思路
如果直接求出第20190324项的值,应该会超限,所以应该换种想法。因为我们只要最后结果的后四位,所以每次相加的时候只要把每个数的后四位加起来就可以了。
代码
#include <iostream>
using namespace std;
int num[20190330];
int main()
{
for(int i=1;i<=20190324;i++){
if(i<=3){
num[i] = 1;
}else{
num[i] = (num[i-1] + num[i-2] + num[i-3]) % 10000;
}
}
printf("%d",num[20190324]);
return 0;
}