题目
f1=f2=1,fn=afn−1+bfn−2(n>2)f1=f2=1,f_n=af_{n-1}+bf_{n-2}(n>2)f1=f2=1,fn=afn−1+bfn−2(n>2)
输入包含四个整数n(1≤n≤100),a(1≤a≤10),b(1≤a≤10),p((1≤a≤2000)。n(1\leq n \leq 100),a(1\leq a \leq 10),b(1\leq a \leq 10),p((1\leq a \leq 2000)。n(1≤n≤100),a(1≤a≤10),b(1≤a≤10),p((1≤a≤2000)。
输出fnf_nfn对p取模的值
样例输入3 1 1 10000样例输出2
分析与解答:
n大,不能直接用递归,需要用递推式转移变量
#include<iostream>
using namespace std;
int main(){int n,a,b,p;cin>>n>>a>>b>>p;if(n==1||n==2) cout<<1;else{int c1=1,c2=1,c;for(int i=3;i<=n;++i){c=(a*c2+b*c1)%p;c1=c2;c2=c;}cout<<c; }return 0;
}