记录编号 68699 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 数列求值 最终得分 100
用户昵称 Gravatardigital-T 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2013-08-25 22:45:12 内存使用 0.32 MiB
显示代码纯文本
#include<fstream>
using namespace std;
ifstream fi("sequenceb.in");
ofstream fo("sequenceb.out");
int a,b,n;
int p[7][7],num[7][7]={{0}};
int main()
{
	fi>>a>>b>>n;
	int tmp1=1,tmp2=1;
	p[1][1]=(a+b)%7;
	if(p[1][1]==1){fo<<1<<endl;return 0;}
	int counter,tmp,cir;
	num[1][1]=1;
	tmp2=p[1][1];
	counter=2;
	while(num[tmp1][tmp2]==0)
	{
		num[tmp1][tmp2]=counter;
		counter++;
		p[tmp1][tmp2]=(a*tmp2+b*tmp1)%7;
		tmp=p[tmp1][tmp2];
		tmp1=tmp2;
		tmp2=tmp;
	}
	cir=counter-num[tmp1][tmp2];
	n%=cir;
	tmp=(n-2+cir)%cir+num[tmp1][tmp2]-1;
	if(tmp==0)//tmp=0是第0组数字,而结果正是f(1)=1的情况
	{
		fo<<1<<endl;
		return 0;
	}
	//fo<<n<<' '<<cir<<' '<<tmp<<endl;
	for(int i=0;i<=6;i++)
		for(int j=0;j<=6;j++)
			if(num[i][j]==tmp)
			{
				fo<<p[i][j]<<endl;
				return 0;
			}
	return 0;
}