相信小伙伴们都学过斐波那契数列,它是这样的一个数列:1,1,2,3,5,8,13,21\cdots1,1,2,3,5,8,13,21⋯。
用 f_nfn 表示斐波那契数列的第 nn 项,则有:f_1 = f_2 = 1f1=f2=1,f_n = f_{n-1} + f_{n-2} (n>2)fn=fn−1+fn−2(n>2)。
为了提高难度,蒜头君决定修改公式,如下:
用 f_nfn 表示新数列的第 nn 项,则有:f_1 = f_2 = 1f1=f2=1,f_n =a f_{n-1} + bf_{n-2} (n>2)fn=afn−1+bfn−2(n>2)。
输入格式
输入每行包含 44 个整数 n(1 \le n \le 100)n(1≤n≤100),a( 1 \le a \le 10)a(1≤a≤10),b(1 \le b \le 10)b(1≤b≤10),p(1 \le p \le 2000)p(1≤p≤2000)。
输出格式
输出 f_nfn 对 pp 取模的值。
格式说明
输出时每行末尾的多余空格,不影响答案正确性
样例输入
3 1 1 1000
样例输出
2
#include <iostream>
using namespace std;
int n,a,b,c;
int f(int x){
if(x==1||x==2){
return 1;
}
else{
return (a*f(x-1)+b*f(x-2))%c;
}
}
int main() {
cin>>n>>a>>b>>c;
cout<<f(n)<<endl;
return 0;
}