题意:
已知f[1] = f[2] = 1,输入三个数a,b,n,求f[n] = (a*f[n-1]+b*f[n-2])%7的结果
分析:
f[n-1]和f[n-2]最多为7种情况(0,1,2,3,4,5,6),则它们的组合最多为49,即周期为49.
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <ctime>
#include <cmath>
#include <cstdlib>17:19:592016-07-25
#include <algorithm>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <iterator>
#include <vector> using namespace std; #define LL long long
#define INF 0x3f3f3f3f
#define MON 1000000007
#define MAXN 10000010
#define MAXM 1000010 const int maxn = ;
int f[maxn]; int main()
{
int a, b, n;
while(scanf("%d%d%d", &a, &b, &n)==&&a&&b&&n)
{
int i;
f[] = f[] = ;
for(i = ; i < ; i++ )
f[i] = (a*f[i-]+b*f[i-])%;
printf("%d\n", f[n%]);
} return ;
}