当前位置: 首页 > article >正文

Golang | Leetcode Golang题解之第552题学生出勤记录II

题目:

题解:

const mod int = 1e9 + 7

type matrix [6][6]int

func (a matrix) mul(b matrix) matrix {
    c := matrix{}
    for i, row := range a {
        for j := range b[0] {
            for k, v := range row {
                c[i][j] = (c[i][j] + v*b[k][j]) % mod
            }
        }
    }
    return c
}

func (a matrix) pow(n int) matrix {
    res := matrix{}
    for i := range res {
        res[i][i] = 1
    }
    for ; n > 0; n >>= 1 {
        if n&1 > 0 {
            res = res.mul(a)
        }
        a = a.mul(a)
    }
    return res
}

func checkRecord(n int) (ans int) {
    m := matrix{
        {1, 1, 0, 1, 0, 0},
        {1, 0, 1, 1, 0, 0},
        {1, 0, 0, 1, 0, 0},
        {0, 0, 0, 1, 1, 0},
        {0, 0, 0, 1, 0, 1},
        {0, 0, 0, 1, 0, 0},
    }
    res := m.pow(n)
    for _, v := range res[0] {
        ans = (ans + v) % mod
    }
    return ans
}

http://www.kler.cn/a/388568.html

相关文章:

  • 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
  • 【机器学习】平均绝对误差(MAE:Mean Absolute Error)
  • 推荐一个超漂亮ui的网页应用设计
  • C语言第十一周课——函数的调用
  • 常见error集合
  • 智能零售柜商品识别
  • WordPress HTTPS 配置问题解决方案
  • 试编写算法将单链表就地逆置(默认是带头节 点,如果是不带头节点地逆置呢?)
  • Ubuntu24.04网络异常与应对方案记录
  • 【OH】openHarmony开发环境搭建(基于windows子系统WSL)
  • 在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码
  • 【kafka】大数据编写kafka命令使用脚本,轻巧简洁实用kafka
  • docker-compose 部署ntp时间同步服务(tmpfs例子)
  • 三菱MR-J4-B系列伺服参数一览
  • 第26天 安全开发-PHP应用模板引用Smarty渲染MVC模型数据联动RCE安全
  • 多线程编程中,使用 std::mutex 需要注意一些潜在的问题
  • 机器人开发:从零开始构建你的第一个机器人
  • 实验(未完成)
  • 43.第二阶段x86游戏实战2-提取游戏里面的lua
  • 宏观经济学笔记
  • PyQt5 详细安装与配置教程及使用
  • CSS的配色
  • 阿尔特曼:AGI 和 ASI 将在未来几千天内到来
  • 【SSL-RL】自监督强化学习:随机潜在演员评论家 (SLAC)算法
  • 几种QQuickWidget与Qml交互数据的方法
  • 深入理解 Git 及其工具的用途、使用方法与区别