数列求值
一、题目内容
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
给定数列 1, 1, 1, 3, 5, 9, 17, ⋯,从第 4 项开始,每项都是前 3 项的和。
求第 20190324 项的最后 4 位数字。
运行限制
最大运行时间:1s
最大运行内存:128M
二、思路分析
本题类似于斐波那契数列,动态规划或者递归都可以,思路简单。注意需要先取余,如果先将每项的结果求出来,最后再对其取余的话,求和的数据会溢出。
三、代码实现
#include <bits/stdc++.h>
using namespace std;
long long a1, a2, a3, ans;
long long fun(int n) {
a1 = a2 = a3 = 1;
if (n <= 3)
return 1;
for (int i = 4; i <= n; i++) {
ans = (a1 + a2 + a3) % 10000; //注意取模
a1 = a2;
a2 = a3;
a3 = ans;
}
return ans;
}
int main() {
int n;
cin >> n; //输入20190324
cout << fun(n) << endl;;
return 0;
}
答案:4659
加油哦! 如有错误和需要改进完善之处,欢迎大家纠正指教。