比赛 |
20121016 |
评测结果 |
RRRRRRRRRRRRRRRRRRRR |
题目名称 |
数列求值 |
最终得分 |
0 |
用户昵称 |
QhelDIV |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
3.28 MiB |
提交时间 |
2012-10-16 20:51:30 |
显示代码纯文本
#include <fstream>
#include <memory.h>
using namespace std;
ifstream fin("sequenceb.in");
ofstream fout("sequence.out");
int A,B,N,ans[3],f[3][3],temp[3][3],MR[3][3]=
{
{0,0,0},
{0,0,1},
{0,1,1}
};
void Di(int pos)
{
int i,j,k;
if(pos==1)
return;
Di(pos/2);
memset(temp,0,sizeof(temp));
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
{
temp[i][j]+=f[k][j]*f[i][k];
temp[i][j]%=7;
}
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
f[i][j]=temp[i][j];
memset(temp,0,sizeof(temp));
if(pos%2!=0)
{
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
for(k=1;k<=2;k++)
{
temp[i][j]+=MR[k][j]*f[i][k];
temp[i][j]%=7;
}
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
f[i][j]=temp[i][j];
}
}
int main()
{
fin>>A>>B>>N;
MR[1][2]=B;MR[2][2]=A;
f[1][2]=B;f[2][2]=A;f[1][1]=MR[1][1];f[2][1]=MR[2][1];
ans[1]=1;ans[2]=1;
Di(N-1);
int temp[3]={0,0,0};
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
{
temp[i]+=ans[j]*f[j][i];
temp[i]%=7;
}
fout<<temp[1]<<endl;
fin.close();
fout.close();
return 0;
}