比赛 201712练习 评测结果 AAAAAAAAAA
题目名称 数学序列 最终得分 100
用户昵称 烟雨 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2018-01-03 19:49:44
显示代码纯文本
#include<cstdio>
#include <cstring>
using namespace std;
int a,b,n;
struct node
{
	int s[3][3];
	int clear(){memset(s,0,sizeof(s));}
}c,ans,op;
node operator *(node x,node y)
{
	c.clear();
	for(int i=0;i<=1;i++)
	{
		for(int j=0;j<=1;j++)
		{
			for(int k=0;k<=1;k++)
			{
				c.s[i][j]=(c.s[i][j]+x.s[i][k]*y.s[k][j]%7)%7;
			}
		}
	}
	return c;
}
int LL()
{
	freopen ("number1.in","r",stdin);
	freopen ("number1.out","w",stdout);
	while(scanf("%d%d%d",&a,&b,&n)!=EOF)
	{
		if(n<=2)
		{
			printf("1\n");
			continue;
		}
		ans.clear();op.clear();n-=2;
		op.s[0][0]=1;
		op.s[1][0]=1;
		op.s[0][1]=1;
		ans.s[0][0]=a;
		ans.s[1][0]=b;
		ans.s[0][1]=1;
		for(;n;n>>=1,ans=(ans*ans))if(n&1)op=op*ans;
		printf("%d\n",op.s[0][0]%7);
	}
	return 0;
}
int work=LL();
int main(){;}