比赛 20121016 评测结果
题目名称 数列求值 最终得分 0
用户昵称 Benjamin 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-10-18 12:00:09
显示代码纯文本
#define MAX 101
#include <fstream>
using namespace std;
int main()
{
	ifstream fin("sequenceb.in");
	ofstream fout("sequenceb.out");
	short i,a,b,left,right,loop,f[MAX]={0,1,1};
	int n;
	fin>>a>>b>>n;
	i=3;
	while(true)
	{
		f[i]=(a*f[i-1]+b*f[i-2])%7;
		if(i%2==0)//将这i个元素一分为二,检查前一半和后一半是否完全相同
		{
			left=1;right=i/2+1;
			loop=0;
			while(f[left++]==f[right++])loop++;
			if(loop==i/2)break;
		}
		i++;
	}
	short fn=(n%loop==0)?f[loop]:f[n%loop];
	fout<<fn<<endl;
	fin.close();fout.close();
	return 0;
}