杭电 OJ 1005

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	int A, B, n;
	
	while (cin >> A >> B >> n)
	{
		if (A == 0 && B == 0 && n == 0)
			break;
		vector<int> f(50);
		f[1] = f[2] = 1;
		if (n > 2)
		{
			for (int i = 3; i < 50; i++)
				f[i] = (f[i - 1] * A + f[i - 2] * B) % 7;
			cout << f[n % 49] << endl;
		}
		else
		{
			cout << f[n] << endl;
		}
	}
	return 0;
}

对7取余,f(n)只和前两项有关,最多7*7次不重复

猜你喜欢

转载自blog.csdn.net/fuwu4087/article/details/80715295