如何对负数取模

2023-05-16

问:给定一个数x,x可以为整数也可以为负数,如何对x取模,模为Mod

答:x = ((x % Mod) + Mod) % Mod

具体应用 HDU - 6185

分析:此题是递推 + 矩阵快速幂,但是因为递推式中有一个数是负数,所以需要对负数进行模运算,否则后再n = 22(不止)时出错

参考博客:https://blog.csdn.net/elbadaernu/article/details/77825979

参考代码:

 

#include <stdio.h>
#include <string.h>

#define N 15
#define Mod 1000000007

typedef long long ll;

const int n = 4;

struct Matrix {
    ll a[N][N];
};

void print_mat(Matrix a) {
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            printf("%lld ", a.a[i][j]);
        }
        puts("");
    }
}

Matrix mul(Matrix a, Matrix b) {
    Matrix c; memset(c.a, 0, sizeof(c.a));
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            for (int k = 0; k < n; ++k) {
                c.a[i][j] = (((c.a[i][j] + a.a[i][k] * b.a[k][j]) % Mod) + Mod) % Mod;
            }
        }
    }
    return c;
}

Matrix qpow(Matrix a, ll b) {
    Matrix res; memset(res.a, 0, sizeof(res.a));
    for (int i = 0; i < n; ++i) res.a[i][i] = 1;
    while (b) {
        if (b & 1) res = mul(res, a);
        a = mul(a, a);
        b >>= 1;
    }
    return res;
}

int main() {
    ll k;

    while (scanf("%lld", &k) != EOF) {
        ll val[N] = {0, 1, 5, 11, 36}, sum = 0;
        if (k <= 4) { printf("%lld\n", val[k]); continue; }

        Matrix res; memset(res.a, 0, sizeof(res.a));
        res.a[0][0] = 1; res.a[0][1] = 5; res.a[0][2] = 1; res.a[0][3] = -1;
        for(int i = 1; i < n; ++i) res.a[i][i - 1] = 1;

        res = qpow(res, k - 4);
        for (int i = 0; i < n; ++i) {
            sum = (sum + res.a[0][i] * val[4 - i]) % Mod;
        }
        printf("%lld\n", sum);
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对负数取模 的相关文章

  • 过去的 2017 年

    过去的 2017 年分为两个部分 xff0c 前半部分偏忙碌 xff0c 个人时间较少 xff0c 但是收获甚微 xff1b 后半部分进入了一个学习的环境 xff0c 最主要的就是个人可自由支配的时间多了 xff0c 留给了我很多思考的时间
  • Android四大组件详解

    注 xff1a 本文主要来自网易的一个博主的文章 xff0c 经过阅读 xff0c 总结 xff0c 故留下文章在此 Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity xff0c Service服务
  • vim 中批量添加注释(块选择模式)

    批量注释 xff1a Ctrl 43 v 进入块选择模式 xff0c 然后移动光标选中你要注释的行 xff0c 再按大写的 I 进入行首插入模式输入注释符号如 或 xff0c 输入完毕之后 xff0c 按两下 ESC xff0c Vim 会
  • Socket通信原理和实践

    我们深谙信息交流的价值 xff0c 那网络中进程之间如何通信 xff0c 如我们每天打开浏览器浏览网页时 xff0c 浏览器的进程怎么与web服务器通信的 xff1f 当你用QQ聊天时 xff0c QQ进程怎么与服务器或你好友所在的QQ进程
  • linux下查看和添加PATH环境变量

    linux下查看和添加PATH环境变量 PATH xff1a 决定了shell将到哪些目录中寻找命令或程序 xff0c PATH的值是一系列目录 xff0c 当您运行一个程序时 xff0c Linux在这些目录下进行搜寻编译链接 编辑你的
  • Linux 内存映射函数 mmap()函数详解

    一 概述 内存映射 xff0c 简而言之就是将用户空间的一段内存区域映射到内核空间 xff0c 映射成功后 xff0c 用户对这段内存区域的修改可以直接反映到内核空间 xff0c 同样 xff0c 内核空间对这段区域的修改也直接反映用户空间
  • Cygwin获取root权限

    1 找到cygwin 的etc目录中有一个名为passwd的文件 2 用写字板打开passwd 这个文件 xff0c 找到以下部分 xff0c 把其中的windows用户名换成root xff08 共3处都改过来 xff09 Adminis
  • Linux Shell 只列出目录的方法

    在实际应用中 xff0c 我们有时需要仅列出目录 xff0c 下面是 4 种不同的方法 1 利用 ls 命令的 d 选项 xff1a ls d Desktop pic shell src 2 利用 ls 命令的 F 选项 xff1a ls
  • 容器00-使用docker安装运行httpd

    ubuntu 16 04安装docker span class hljs comment apt get install docker io span ubuntu启动docker服务 span class hljs comment ser
  • 关于Tkinter使用多进程后打包成exe弹出多个相同窗口的解决方案

    关于Tkinter使用多进程后打包成exe弹出多个相同窗口的解决方案 在编写线路切换程序时 xff0c 由于需要登录不同的网络设备上 xff0c 所以必须使用多进程而不能使用多线程 xff0c 但是在打包成exe后运行发现使用几个进程就弹出
  • JSON处理的Java API(JSR-353)–流API

    Java很快将具有一组标准的API xff0c 作为Java EE 7的一部分处理JSON 此标准定义为JSR 353 JSON处理的Java API xff08 JSON P xff09 xff0c 目前正在最终批准投票中 JSON P提
  • 以梦为码,最燃的华为开发者大会2020(Cloud)有这些看点

    Write the Code xff0c Change the World 以梦为码 xff0c 这的确是开发者最好的时代 在全球ICT产业遇上几十年未有之大变局之际 xff0c 开发者的重要性与价值毋庸置疑 正如华为公司高级副总裁 Clo
  • Hisat2 比对到参考基因组

    比对的流程 xff1a 建立索引 比对到参考基因组 SAM转BAM文件 BAM建立索引 1 准备参考基因组 建立索引 参考基因组准备 注意参考基因组版本信息 下载 xff0c Ensembl xff1a http asia ensembl
  • oh-my-posh安装过程问题及注意事项

    在通过官方的安装命令后在个人用户的环境变量中有oh my posh的环境变量 但即使已经装配了环境变量 xff0c 在powershell中输入oh my posh依然会出现未识别问题 这个问题的解决方法是 通过管理员模式进入 然后就会发现
  • 阿里巴巴2014校招笔试题-2013年9月14日

    不得不吐槽 xff0c 阿里真是太混乱了 xff0c 北京的笔试在考场等了两个半小时 xff0c 考卷都没运到考场 xff0c 64 阿里巴巴集团校园招聘 回应说 xff1a 北京的同学们 xff0c 简单解释下 xff0c 为了试卷的保密
  • Android 如何通过拨号盘暗码启动你的应用

    原文地址 xff1a https blog csdn net zhenbohuang article details 76138790 手机上通常都有一些暗码来启动一些隐藏的功能 最常见的就是在拨号盘输入 06 来查看imei号 那么自己开
  • 简单说说容器/沙盒(Sandbox)以及Linux seccomp

    如果应用程序逻辑有误 xff0c 会造成操作系统崩溃 这句话其实不对 如果一个应用程序都能让一个操作系统崩溃了 xff0c 那这一定是这个系统在设计上或者实现上的BUG xff01 再次重申 xff0c 我不知道谭浩强的C语言教材现在是怎么
  • Ubuntu下Pycharm安装破解

    在安装pycharm之前需要先安装jdk8以上的版本 安装pycharm的JDK环境 Pycharm需要JDK环境解析 xff0c 否则在安装过程中报错 依次执行一下几条command sudo add apt repository ppa
  • 二分法查找某个数的位置(Java实现)

    public class BinaryFind public static void main String args int a 61 new int 1000000 省去排序的步奏 for int i 61 0 i lt a lengt
  • 好东西一定是时间沉淀的产物!!!

    做事情 xff0c 不要期待一蹴而成 xff0c 因为好东西一定是时间沉淀的产物 xff01 xff01 xff01 总结 xff1a 细水长流

随机推荐

  • Tomcat无法正常工作

    场景一 xff1a 曾经下载过Tomcat xff0c 直接删除目录后又安装 出错原因 xff1a 只删除了Tomcat的相关目录 xff0c 但注册表没有删除 解决方案 xff1a 找到你重下的Tomcat xff0c 点击运行卸载文件
  • JSP内置对象错误Access restriction

    错误内容 xff1a Multiple annotations found at this line Access restriction The method 39 ServletRequest getParameter String 3
  • 搭建Android开发平台(Android studio)

    引论 开发任何软件都需要有一款顺手的开发工具 xff0c 就像是剑客应该有一把属于自己的宝剑 xff08 独孤求败级别的除外 xff09 xff0c 开发Android APP更是如此 在这里我们选择的开发工具是android studio
  • gcc编译运行c文件

    1 新建 c文件 xff08 如A c xff09 2 在当前目录下打开终端 3 输入指令 xff1a gcc c 文件名 c gcc 文件名 o o 文件名 文件名
  • ssh用户和密码远程登录命令

    ssh user 64 url p passwd
  • http工作原理

    1 域名服务器将域名转换为IP地址 xff0c http根据IP地址连接到服务器 2 发送请求 xff08 post或get xff09 3 服务器进行响应 xff0c 返回被请求的资源 4 浏览器接收文件解释并最终呈现给用户
  • Android老师作业2

    因为我没有保存 xff0c 所以没有老师发的图片 xff0c 不过考虑到这个项目考察的是UI布局和国际化 xff0c 图片的作用只是为了美观 xff0c 所以我决定只实现布局和国际化就好了 从截图上看 xff0c 最好的布局应该是用网格 x
  • TCP会话开始与结束

    会话开始 xff1a 客户端向服务器发送SYN消息 服务器接收SYN消息并发送SYN ack消息 客户端接收SYN ack并发送ack消息 服务器接收ack xff0c 连接建立会话开始 会话结束 xff1a 客户端向服务器发送fin消息
  • android启动的四种模式

    standard xff1a 顾名思义 xff0c 标准的启动模式 xff0c 也即默认的启动模式 他会创建 一个任务栈将打开的所有activity都放入 退出时按后进先出的原则依次将activity退出 这种启动模式看似没有问题 xff0
  • android老师布置的作业四

    都看过题 xff0c 题目不描述 首先 xff0c 我们需要制作静态界面然后才能将各个界面集成到一起 主界面设计分析 使用布局方式 xff1a absolute xff0c 优点是随便拖动 xff0c 缺点是只适用于一种手机屏幕 xff0c
  • android老师作业五

    UI布局以前做过 xff0c 不提了 其他的问题主要是安装1个4 0的模拟器 xff0c 不然由于安全性问题无法运转 文件存储用SharedPreferences这个工具类 xff0c 其他的关于这个项目的一切全在代码中吧 代码 xff1a
  • poj1287解题报告

    对于学过图和Prim算法的人来说 xff0c 此题是一道不折不扣的水题 xff0c 尤其是输入范围限定在了50之内 xff0c 所以即便我用了O xff08 n 3 xff09 的算法也只用了16MS就AC了 前期建图 xff0c 我用的是
  • zoj3961解题报告

    借今年浙江省赛的题练练手 首先 xff0c 由题意知 xff0c A与B发信息 xff0c 当A与B连续互相发信息m天时 xff0c 好感度point 43 1 输入有A向B发信息的天数与B向A发信息的起止天数 xff0c 具体格式看题 n
  • poj3617解题报告

    题意 xff1a 输入一个整数n xff0c 后面跟着n行大写字母 xff0c 现要求对这些字母进行排序 xff0c 要求字典序最小 xff0c 每80个字母一行且字母只能从两端任取一个 根据上面的信息我们不难想到若使字典序最小则只需从两端
  • Android老师作业六

    关于这次的Android作业 xff0c 我整理了以下几个要点 第一个是UI设计 xff0c 因为做APP第一步就是他 xff0c 避是避不掉的 UI一定要注意主界面分为两部分 xff0c 上部分是方便插入的静态页面 xff0c 下面是个l
  • 架构组件 ---- ViewBinding 视图绑定 入门

    翻译自android官网 xff0c 可直接去官网观看 架构组件 ViewBinding 视图绑定 入门 设置说明用法在 Activity 中使用视图绑定在 Fragment 中使用视图绑定 与 findViewById 的区别与数据绑定的
  • <操作系统>读者写者问题(读者优先)C语言实现

    问题描述 代码 span class token macro property span class token directive keyword include span span class token string lt stdio
  • poj1163解题报告

    经典的动态规划 xff0c 分析省略不懂的完全可以百度 数字三角形 xff0c 仅给出AC代码Memory 260k time 32ms include lt cstdio gt include lt cstring gt include
  • UVA10881解题报告

    还是那句话 xff0c 解题先看题 由题意知有一根长度为L的木棒 xff0c 木棒上面有n只蚂蚁 xff0c 每只蚂蚁或朝左或朝右且以每秒1cm的速度移动 xff0c 吗 xff0c 蚂蚁相撞后掉头 xff0c 问T秒后每只蚂蚁的状态 xf
  • 如何对负数取模

    问 xff1a 给定一个数x xff0c x可以为整数也可以为负数 xff0c 如何对x取模 xff0c 模为Mod 答 xff1a x 61 x Mod 43 Mod Mod 具体应用 HDU 6185 分析 xff1a 此题是递推 43