藍橋杯歷屆題目及解析彙總(附思路及代碼)【點擊此進入】
藍橋杯,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