這道題需要注意的是 數據類型的取值範圍 利用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.