數列求值【2019C/C++省賽B組】

在這裏插入圖片描述
這道題需要注意的是 數據類型的取值範圍 利用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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章