hdoj_1005 Number Sequence

来源:互联网 发布:网络安全管理系统软件 编辑:程序博客网 时间:2024/06/06 11:41

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005

题目大意:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给定 A, B, n, 求 f(n).

//C++代码#include<iostream>using namespace std;int main(){int a,b,n;while(cin>>a>>b>>n,a||b||n){a%=7,b%=7;int p=1,q=1,i,k,l,num,t[55];int s[7][7]={0};for(i=1;i<=50;i++){t[i]=p;if(s[p][q]==0){s[p][q]=i;num=(q*a+p*b)%7;p=q;q=num;}else{k=i-s[p][q];l=i-1;break;}}n-=(n-l)/k*k;if(n>l) n-=k;cout<<t[n]<<endl;}return 0;}