题目链接
数学题-小红书2024笔试(codefun2000)
题目内容
小刚非常喜欢做数学题,这天小刚在做题的过程中看到了熟悉的斐波那契数列,已知斐波那契数列的通项公式为
Fn+2= Fn+1+ Fn 。同桌的塔子哥趁小刚不注意的时候,偷偷的改了一下小刚试卷的题目,在数列的通项公式等式右边加上了两个常数 A 和 B 。已知数列 { Fn },其中F0和 F1 均为 1 ,对于每一项 , Fn+2= Fn+1* A + Fn * B 。
由于数列可能会很大,小刚只需要给出对应项(数列中的每一项)模上 M 之后得出结果就行了。
输入描述
输出描述
一行 Q 个数,依次表示模上数字 M 后的答案。
样例1
输入
8 6 5
5
8 1 9 4 9
输出
1 1 2 3 2
提示
首先预处理出前N项,根据题意进行模拟即可
题解1
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL one = 1LL;
const int N = 5e4 + 10;
int q,Q;
LL A,B,M,f[N] = {one, one};
int main(){
scanf("%lld%lld%lld", &A, &B, &M);
scanf("%d", &Q);
for(int i = 2; i < N; i++) {
f[i] = (f[i - 1]*A + + f[i - 2]*B) % M;
}
for(int i = 1; i <= Q; i++){
scanf("%d", &q);
printf("%lld ", f[q]);
}
return 0;
}