(递归)斐波那契数列

版权声明:所有内容仅供大家学习与复习使用,请勿用于任何商业用途;维特根斯坦曾说过,凡可说的,皆无意义。凡有意义的,皆不得不以荒唐的语言传递其意义。我十分赞同。 https://blog.csdn.net/qq_40828914/article/details/89044662

题目

f 1 = f 2 = 1 , f n = a f n 1 + b f n 2 ( n > 2 ) f1=f2=1,f_n=af_{n-1}+bf_{n-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)。
输出 f n f_n 对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;
}

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/89044662