Codeforces 392C Yet Another Number Sequence

来源:互联网 发布:ubuntu英文改中文 编辑:程序博客网 时间:2024/06/01 20:26

水题,不多说

#include<stdio.h>#include<string.h>long long N;#define M 2struct node{long long a[M][M];};node cheng(node a,node b){node c;memset(c.a,0,sizeof(c.a));for(int i=0;i<M;i++){for(int j=0;j<M;j++)for(int k=0;k<M;k++)c.a[i][j]=(c.a[i][j]+(a.a[i][k]*b.a[k][j])%N)%N;}return c;}const node A={{1,1,1,0} }; int main(){int t,a,b,n,m;node x,y; scanf("%d",&t);while(t--)    {     scanf("%d%d%d%d",&a,&b,&n,&m);     N=1; for(int i=1;i<=m;i++) N*=10;     x.a[0][0]=b;     x.a[0][1]=a;     x.a[1][0]=x.a[1][1]=0;     y=A;      n--;      while(n)      {       if(n&1) x=cheng(x,y);      y=cheng(y,y);      n>>=1;      }      printf("%lld\n",(x.a[0][0]%N+N)%N);    }return 0;}