zoukankan      html  css  js  c++  java
  • 矩阵快速幂

     1 #include <iostream>
     2 using namespace std;
     3 
     4 const int mod = 10003;
     5 const int num = 2;
     6 
     7 struct mat {
     8     long long m[num][num];
     9 };
    10 
    11 
    12 
    13 mat mul(mat a, mat b) {
    14     mat ans;
    15     for (int i = 0; i<num; i++)
    16         for (int j = 0; j < num; j++) {
    17             ans.m[i][j] = 0;
    18             for (int k = 0; k < num; k++)
    19                 ans.m[i][j] += (a.m[i][k] * b.m[k][j]);
    20             ans.m[i][j] %= mod;
    21         }
    22     return ans;
    23 }
    24 
    25 mat quick_pow(mat a, long long b) {
    26     mat ans{
    27         1,0,
    28         0,1
    29     };
    30     mat tmp = a;
    31 
    32     while (b>0) {
    33         if (b & 1)
    34             ans = mul(ans, tmp);
    35         tmp = mul(tmp, tmp);
    36         b >>= 1;
    37     }
    38     return ans;
    39 }
    40 
    41 int main() {
    42     int n;
    43     while (cin>>n)
    44     {
    45         mat a{
    46             1,1,
    47             1,0
    48         };
    49         mat ans = quick_pow(a, n);
    50         cout << ans.m[0][1] << endl;
    51     }
    52     return 0;
    53 }
    自己选的路,跪着也要把它走完------ACM坑
  • 相关阅读:
    错误页面提示大全
    http协议基础知识
    初识性能测试
    seo
    测试工程师的分类和发展方向
    Jsessionid和cookie的区别与联系
    nginx配置
    复盘能力
    开发自测方法
    OKR 目标关键成果法
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6086750.html
Copyright © 2011-2022 走看看