Wednesday, 26 July 2017

lightoj 1065 Number sequence


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

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...