比赛 |
20121016 |
评测结果 |
|
题目名称 |
数列求值 |
最终得分 |
0 |
用户昵称 |
yuan |
运行时间 |
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;
}