$2016$长城信息杯中国大学生程序设计竞赛中南邀请赛$A$题
循环节。
循环节为$2016$,从数据范围以及题目中的一句话也能间接的体会出应该是有循环节的,并且循环节可能是$2016$。
Feel free to think why the problem is called
2016
if you either:
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<map> #include<set> #include<queue> #include<stack> #include<iostream> using namespace std; typedef long long LL; const double pi=acos(-1.0),eps=1e-8; int n,MOD=7; char s[100010]; int a[5][5],b[5][5],c[5][5]; int main() { while(~scanf("%s",s)) { n=0; for(int i=0;s[i];i++) n=(10*n+s[i]-'0')%2016; scanf("%d%d%d%d",&a[1][1],&a[1][2],&a[2][1],&a[2][2]); memset(b,0,sizeof b); b[1][1]=1; b[2][2]=1; for(int i=1;i<=n;i++) { c[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1]; c[1][2]=a[1][1]*b[1][2]+a[1][2]*b[2][2]; c[2][1]=a[2][1]*b[1][1]+a[2][2]*b[2][1]; c[2][2]=a[2][1]*b[1][2]+a[2][2]*b[2][2]; b[1][1]=c[1][1]%7; b[1][2]=c[1][2]%7; b[2][1]=c[2][1]%7; b[2][2]=c[2][2]%7; } printf("%d %d %d %d ",b[1][1],b[1][2],b[2][1],b[2][2]); } return 0; }