记录编号 |
133092 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
数列求值 |
最终得分 |
100 |
用户昵称 |
奶猹 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.006 s |
提交时间 |
2014-10-27 07:47:40 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<climits>
#include<algorithm>
#define Mod 7
using namespace std;
typedef long long LL;
int x,a,b;
class aaaa{
public:
LL aa[2][2];//
aaaa operator * (const aaaa &b)const
{
aaaa c;
c.empty();
int i,j,k;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
{
c.aa[i][j]+=aa[i][k]*b.aa[k][j];
c.aa[i][j]%=Mod;
}
return c;
}
void empty(){memset(aa,0,sizeof(aa));}
void print()
{
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%lld ",aa[i][j]);
printf("\n");
}
}
};
aaaa ans,hand;
void init();
void work(int );
void outit();
int main()
{
freopen("sequenceb.in","r",stdin);
freopen("sequenceb.out","w",stdout);
init();
work(x);
outit();
//while(1);
fclose(stdin);
fclose(stdout);
return 0;
}
void init()
{
scanf("%d%d%d",&a,&b,&x);
ans.aa[0][0]=1;
ans.aa[0][1]=1;
ans.aa[1][0]=0;
ans.aa[1][1]=0;
hand.aa[0][0]=a;
hand.aa[0][1]=1;
hand.aa[1][0]=b;
hand.aa[1][1]=0;
}
void work(int k)
{
k--;
while(k)
{
if(k&1)
ans=ans*hand;
hand=hand*hand;
k>>=1;
}
}
void outit()
{
printf("%lld\n",ans.aa[0][1]);
}