记录编号 |
68699 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
数列求值 |
最终得分 |
100 |
用户昵称 |
digital-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;
}