比赛 |
20121016 |
评测结果 |
WAAAWAAAAAWWWWWWWWAW |
题目名称 |
数列求值 |
最终得分 |
45 |
用户昵称 |
Truth.Cirno |
运行时间 |
0.027 s |
代码语言 |
C++ |
内存使用 |
3.15 MiB |
提交时间 |
2012-10-16 21:57:33 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
unsigned long long rec[100];
int main(void)
{
freopen("sequenceb.in","r",stdin);
freopen("sequenceb.out","w",stdout);
int i,a,b,n,temp,nex[3][3]={{0,1,2},{1,2,0},{2,0,1}};
int T,f[100]={0};
cin>>a>>b>>n;
if (n<=10000000)
{
f[0]=1;
f[1]=1;
for (i=3;i<=n;i++)
{
temp=i%3;
f[nex[temp][2]]=(a*f[nex[temp][1]]+b*f[nex[temp][0]])%7;
}
cout<<f[nex[n%3][2]]<<endl;
}
else
{
f[1]=1;
rec[1]=1;
f[2]=1;
rec[2]=8;
for (i=3;i<100;i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
rec[i]=rec[i-1]*7+f[i];
if (i&1)
continue;
temp=i>>1;
if (rec[temp]*int(pow(7.0,double(temp)))==rec[i]-rec[temp])
break;
}
T=temp;
n%=T;
cout<<f[n]<<endl;
}
return(0);
}