给定数列1,1,1,3,5,9,17,⋯,从第 4项开始,每项都是前 3 项的和。
求第 20190324 项的最后 4 位数字。
运行限制
最大运行时间:1s
最大运行内存: 128M
代码
#include<stdio.h>
int main()
{
int a=1,b=1,c=1,d,i;
for(i=4;i<=20190324;i++) //利用四个数循环迭代
{
d=(a+b+c)%10000;
a=b;
b=c;
c=d;
}
printf("%04d",d);
return 0;
}
注意
本题不能利用递归求解(数很大,会超时),递归代码如下
代码
#include <stdio.h>
int fun(int n)
{
if(n<=3)
return 1;
else
return (fun(n-1)+fun(n-2)+fun(n-3))%10000;
}
int main()
{
int n=20190324;
int m=fun(n);
printf("%d",m);
return 0;
}```