蓝桥杯-试题B数列求值

试题 B: 数列求值
【问题描述】
  给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求第 20190324 项的最后 4 位数字。
蓝桥杯-试题B数列求值
【分析】
(1)除了尾部的四位数字,其他的高位数字对于都是无用信息,所以在每一次求出值后运用模运算将高位数字去掉,这个操作对最终的结果没有影响。
(2)代码里建立了一个循环,求出了全部数列,一次循环能求三个值,所以循环次数是从2开始,循环到6730108(20190324/3),可以把20190324替换成6自己想像一下。每次遇到循环次数很大的程序时,我习惯先想一个小一点的循环代替,确认循环条件无误后再写上大循环。
【答案】
4659
【代码】

#include
using namespace std;
int main()
{
int a=1,b=1,c=1;
for(long long int i=2;i<=6730108;i=i+1)
{
a=(a+b+c)%10000;
b=(a+b+c)%10000;
c=(a+b+c)%10000;
}
cout<<c<<endl;
return 0;
}