zoukankan      html  css  js  c++  java
  • Hdu2276Kiki & Little Kiki 2矩阵

    ai = (ai-1  + ai) %2 然后构造个 n*n的矩阵A,  时间K之后的状态就是  A^k  *  B(给出的字符串)

    #include <cstdio>
    #include <algorithm>
    #include <iostream>
    #include <string.h>
    typedef long long LL;
    using namespace std;
    int n;
    struct Matrix
    {
        int m[104][105];
    };
    
    Matrix Mul(Matrix a, Matrix b)
    {
        Matrix  ans;
        for (int i = 0; i < n; i++){
            for (int j = 0; j < n; j++){
                ans.m[i][j] = 0;
                for (int k = 0; k < n; k++){
                    ans.m[i][j] += a.m[i][k] * b.m[k][j];
                    ans.m[i][j] %= 2;
                }
            }
        }
        return ans;
    }
    
    Matrix quick(Matrix a, int b)
    {
        Matrix ans;
        for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            ans.m[i][j] = (i == j);
        while (b){
            if (b & 1){
                ans = Mul(ans, a);
            }
            a = Mul(a, a);
            b >>= 1;
        }
        return ans;
    }
    
    Matrix init()
    {
        Matrix ans;
        for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            ans.m[i][j] = 0;
        ans.m[n - 1][0] = 1;
        for (int i = 0; i<n; i++)
            ans.m[i][i] = 1;
        for (int i = 0; i<n - 1; i++)
            ans.m[i][i + 1] = 1;
        return ans;
    }
    
    int main()
    {
        int k;
        char str[1000];
        int a[1000];
        while (cin >> k){
            scanf("%s", str);
            n = strlen(str);
            Matrix ans = init();
            Matrix  t = quick(ans, k);
            for (int i = 0; i < n; i++)
                a[i] = str[i] - '0';
            for (int j = 0; j<n; j++){
                int sum = 0;
                for (int k = 0; k<n; k++){
                    sum += a[k] * t.m[k][j];
                }
                sum %= 2;
                cout << sum;
            }
            cout << endl;
        }
        return 0;
    }
  • 相关阅读:
    log日志框架和LocationAwareLogger问题
    Eclipse 各种小图标的含义
    自定义log4j日志级别
    在Tomcat配置JNDI数据源的三种方式
    mybatis中"#"和"$"的区别
    Postman用法简介-Http请求模拟工具
    mustache模板技术(转)
    VS的编译选项
    Java Service Wrapper简介与使用
    还活着
  • 原文地址:https://www.cnblogs.com/yigexigua/p/4059772.html
Copyright © 2011-2022 走看看