51nod 2级算法题-1126
2017-04-25 15:48
260 查看
1126 求递推序列的第N项
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值。
Input
输入3个数:A,B,N。数字之间用空格分割。(-10000 <= A, B <= 10000, 1 <= N <= 10^9)
Output
输出f(n)的值。
Input示例
3 -1 5
Output示例
6
找Fibonacci数列循环节。一般情况下,类Fibonacci 数组在Mod^2内一定出现循环节。在数据水的情况下,就不需要快速幂了。
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <queue> #include <stack> using namespace std; #define endl "\n" const int maxn=100000000; const int MOD=7; int F[300]; int main (){ int a,b,n; cin>>a>>b>>n; if (n== 1 || n==2){ printf("1\n"); return 0; } F[0]=1; F[1]=1; F[2]=1; int i; for(i=3;i<300;i++){ F[i]=((a*F[i-1]+b*F[i-2])%MOD+MOD)%MOD; if(F[i]==1 &&F[i-1]==1){ break; } } F[0]=F[i-2]; n%=(i-2); cout<<F <<endl; return 0; }
相关文章推荐
- 51nod 2级算法题-1007
- 51nod 2级算法题-1428
- 【贪心+优先队列】1428 活动安排问题【51nod】【难度:2级算法题】
- 51nod 2级算法题-1010
- 51nod 2级算法题-1014
- 【模拟】1432 独木舟【51nod】【难度:2级算法题】
- 51nod 2级算法题-1050
- 51nod 2级算法题-1062
- 51nod 2级算法题-1133
- 51nod 2级算法题-1092
- 51nod 2级算法题-1279
- 51nod 2级算法题-1095
- 51nod 2级算法题-1315
- 51nod 2级算法题-1119
- 51Nod 2006 飞行员配对 二分图匹配 匈牙利算法
- 51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)
- 51nod 1785 数据流中的算法 【D(x)与E(x)+队列+线段树】
- 51Nod-1785-数据流中的算法
- 51nod 算法马拉松3 A:序列分解
- 【51nod 算法马拉松19 A】区间的价值 V2