| 记录编号 | 
        44369 | 
        评测结果 | 
        AAAAAAAAAAAAAAAAAAAA | 
    
    
        | 题目名称 | 
        1163.数列求值 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         yuan | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.023 s  | 
    
    
        | 提交时间 | 
        2012-10-18 12:00:37 | 
        内存使用 | 
        3.15 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#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;
}