2019年第十屆藍橋杯【C++省賽B組】【第三題:數列求值】——附解題代碼

藍橋杯歷屆題目及解析彙總(附思路及代碼)【點擊此進入】


藍橋杯,ACM算法學習【文檔】【視頻】大放送【點擊此進入】


第三題

標題:數列求值 (本題總分:10 分)###

給定數列 1, 1, 1, 3, 5, 9, 17, …,從第 4 項開始,每項都是前 3 項的和。求
第 20190324 項的最後 4 位數字。
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果爲一
個 4 位整數(提示:答案的千位不爲 0) ,在提交答案時只填寫這個整數,填寫
多餘的內容將無法得分。

解題思路:

類似於斐波那契數列的第 n 項,只不過遞推式變了,不能用遞歸,否則爆棧,還有一個問題是直接算到第 20190324 項肯定是會溢出的,在計算過程中要進行取餘操作。###

代碼:

#include <iostream>
using namespace std;

int solve(int n) {
	if (n <= 3) {
		return 1;
	}
	int a = 1, b = 1, c = 1, res;
	for (int i = 4; i <= n; i++) {
         // 這裏要記得取餘
		res = (a + b + c) % 10000;
		a = b;
		b = c;
		c = res;
	}
	return res;
}

int main() {
	cout << solve(20190324) << endl;
	return 0;
}

答案:4659

藍橋杯,ACM算法進階資料大放送

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