这道题需要注意的是 数据类型的取值范围 利用for循环将所有结果结算一遍,为了避免超出取值范围,直接在for循环里面取后四位数就好了。
求后四位数:n%10000
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define db(x) cout << (x) << endl
//#define LL long long //声明方法一
//typedef long long LL; //声明方法二
typedef unsigned long long LL; //声明方法三
const int N =20190324+10; //尽量使用const来声明常数
LL a[N]; //输出的值会超过int的取值范围,所以定义为longlong
int main(){
a[1]=1;
a[2]=1;
a[3]=1;
for(int i=4;i<=20190324;i++){
a[i]=a[i-1]+a[i-2]+a[i-3];
a[i]%=10000; //避免超出范围,在循环内取后四位数
}
cout << a[20190324] <<endl;
return 0;
}
最后的输出结果是4659.