Wednesday, 26 July 2017

Lightoj 1131 - Just Two Functions


  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define llu long long unsigned
  4. llu a1, b1,c1, a2, b2, c2, f0, f1, f2, g0, g1, g2,n, m, answer1, answer2, MOD;
  5. llu cm[6][6];
  6. void mul(llu a[6][6],llu b[6][6]){
  7.     memset(cm, 0sizeof(cm));
  8.     for(int i = 0; i <6; i++){
  9.         for(int j = 0; j <6; j++){
  10.             for(int k = 0; k <6; k++){
  11.                 cm[i][j]+= ((a[i][k]%MOD)*(b[k][j]%MOD))%MOD;
  12.                 cm[j][j]%=MOD;
  13.             }
  14.         }
  15.     }
  16.     for(int i = 0; i <6; i++){
  17.         for(int j = 0; j <6; j++){
  18.             a[i][j] = cm[i][j]%MOD;
  19.         }
  20.     }
  21. }
  22. void ans(llu p[6][6], llu n){
  23.     llu m[6][6] = {{a1,b1,0,0,0,c1},{1,0,0,0,0,0},{0,1,0,0,0,0}{0,0,c2,a2,b2,0},{0,0,0,1,0,0},{0,0,0,0,1,0}};
  24.     if(== 1) return;
  25.     ans(p, n/2);
  26.     mul(p, p);
  27.     if(n%2) mul(p, m);
  28. }
  29. int main(){
  30.     int ts;
  31.     scanf("%d"&ts);
  32.     for(int p = 1; p <= ts; p++){
  33.     scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld"&a1,&b1, &c1, &a2, &b2,&c2, &f0, &f1, &f2,&g0, &g1, &g2, &MOD,&m);
  34.     llu sf[3] = {f0,f1,f2};
  35.     llu sg[3] = {g0,g1,g2};
  36.     printf("Case %d:\n", p);
  37.     for(int i = 1; i <=m; i++){
  38.     llu f[6][6] = {{a1,b1,0,0,0,c1},{1,0,0,0,0,0},{0,1,0,0,0,0}{0,0,c2,a2,b2,0},{0,0,0,1,0,0},{0,0,0,0,1,0}};
  39.     scanf("%lld"&n);
  40.     if (n<3) answer1 = sf[n]%MOD, answer2 = sg[n]%MOD;
  41.     else ans(f, n-2),answer1 = (f[0][0]*f2+f[0][1]*f1+f[0][2]*f0+f[0][3]*g2+f[0][4]*g1+f[0][5]*g0)%MOD, answer2 = (f[3][0]*f2+f[3][1]*f1+f[3][2]*f0+f[3][3]*g2+f[3][4]*g1+f[3][5]*g0)%MOD;
  42.     printf("%lld %lld\n",answer1%MOD, answer2%MOD);
  43.     }
  44.     }
  45.     return 0;
  46. }

No comments:

Post a Comment

Most Featured Post

Lightoj 1159 - Batman

http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...