第三题:数列求值(10分)
题目描述
给定数列1,1,1,3,5,9,17,…,从第4项开始,每项都是前3项的和。求
第20190324项的最后4位数字。
解:定义前三个变量,暴力递推,每次循环更新变量值;
最后四位数字是取余:本来打算先出结果再取余,考虑到int会爆栈,换做使用long long,结果依旧溢出。从而选择每次循环的时候取余
int a=1;//前三项
int b=1;
int c=1;
for(int i=4;;i++)
{
int tmp;
tmp=(a+b+c)%10000;
a=b;
b=c;
c=tmp;
if(i==20190324)
{
cout<<tmp;
break;
}
}
结果:
int溢出结果:
longlong溢出结果:
还是691