变进制数的计算

news/2025/1/15 18:30:00/文章来源:https://www.cnblogs.com/caijianhong/p/18404850

定义

给定 \(n, \{a_i|1\leq i\leq n, a_i\in \mathbb N^+\}, 0\leq X<\prod_{i=1}^na_i\)。则称 \(X\)\(\{a_i\}\) 下的变进制表示为一个数组 \(\{c_i|1\leq i\leq n, 0\leq c_i<a_i\}\) 满足(注意空范围的 \(\prod\) 定义为 \(1\)

\[X=\sum_{i=1}^nc_i\prod_{j=1}^{i-1}a_j \]

容易发现变进制表示是唯一的。注意,变进制数能表示的数大小有限,不妨直接定义是在 \(\bmod \prod_{i=1}^na_i\) 环境下工作。当 \(a_i=i\) 时,变进制数可以刻画排列的康托展开数。

进位

已知 \(X\) 的变进制表示,但是有一些 \(c_i\geq a_i\),你需要修正。从小到大枚举 \(i\) 逐渐往前进位使得 \(c_i<a_i\),就和高精度计算一样。最后 \(c_n\) 算完可能会溢出去,我们直接丢掉,反正我们是模意义的。

对位加

已知 \(X, Y\) 的同一变进制的表示,求 \(X+Y\) 的变进制表示。就是直接对位加,再进位。类似高精度加法。

数加

已知 \(X\) 的变进制表示与低精度整数 \(k\),求 \(X+k\) 的变进制表示。这个非常简单,正数则在 \(c_1\) 上加 \(k\),然后直接进位。负数则先取相反数,再对位加。

相反数

已知 \(X\) 的变进制表示,求 \(-X\) 的变进制表示。你精心构造,使得 \(c_1'=a_1-c_1, c_i'=a_i-c_i-1(i>1)\) 即可。如果发现 \(c_1=0\),则你构造完了之后给它进位。

数乘

已知 \(X\) 的变进制表示与整数 \(k\),求 \(kX\) 的变进制表示。负数先取一遍相反数以防万一。完了以后你就每一个 \(c_i\) 都乘上 \(k\),然后进位。

秦九韶表示

\[X=a_1\cdots( a_{n-2}(a_{n-1}c_n+c_{n-1})+c_{n-2})\cdots+c_1 \]

一目而喻,不言了然。

获取真实值

已知 \(X\) 的变进制表示,求 \((X\bmod \prod_{i=1}^na_i)\bmod p\),其中 \(p\) 是一个低精度正整数。转秦九韶表示后从内到外计算,或者根据定义计算。

卷积

已知 \(X, Y\) 的变进制表示(变进制可以不同),求 \(XY\) 的变进制表示(以其中一个数的变进制为 \(XY\) 的变进制,不妨用 \(Y\) 的)。对 \(X\) 应用秦九韶表示,根据乘法分配律,将 \(Y\) 乘入所有 \(c_i\) 上,然后从内到外计算。形如,有一个变进制数 \(tmp=0\),然后从大到小枚举 \(i\),先对 \(tmp\) 数乘 \(a_i\),然后加上 \(c_iY\)。复杂度是 \(O(n^2)\) 的。

换进制

已知 \(X\) 在某种变进制下的表示,请换成另一种。和卷积是一样的,只不过 \(Y=1\),先转成秦九韶,然后再转到新的进制。复杂度是 \(O(n^2)\) 的。

截断

已知 \(X\)\(\{a_i|1\leq i\leq n\}\) 的变进制表示和一个 \(n_0\),求 \(X\)\(\{a_i|1\leq i\leq n_0\}\) 的变进制表示。我们直接将 \(c_i\) 截断到 \(n_0\) 就是对的,不言而喻,一目了然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794544.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FancyVideo环境搭建推理

​引子很少关注360开源的代码,最近360AI团队开源了最新视频模型FancyVideo,据说RTX3090可跑。可以在消费级显卡 (如 GeForce RTX 3090) 上生成任意分辨率、任意宽高比、不同风格、不同运动幅度的视频,其衍生模型还能够完成视频扩展、视频回溯的功能,一种基于 UNet 架构的视…

计算机网络之TCP/IP协议简介

TCP/IP协议 简介 首先TCP/IP协议不只是表示TCP协议和IP协议两种协议,而是一个协议簇。协议簇是什么并不难理解,就是字面意思,一个由多个协议组合而成的集合体,其中最有代表性的就是TCP和IP这两个协议,除了这两个还有我们熟知的FTP、UDP等协议。当然我们下面主要介绍的还是…

博欧实习(三十四)

今日任务 1、今日继续完善系统,协助改善了汇总表,解决无法在线上数据库运行的问题。 2、修改监控实体,修改监控页面显示数据不正确问题。3、确认交付信息修改在调整,出库日期自动增加三个月

【可视化+编程】快速掌握seaborn的基础用法

https://mp.weixin.qq.com/s/gRkFrLbChEJ5kHsGokLA6A?poc_token=HNGw3majZY6E6VuU_gYN_ODo66iKNCpKzodh8_3T

密码正则表达式

String regex = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*(){}+=]).{9,}$";

centos7.9安装mysql8.0.39

1. 添加 MySQL Yum 仓库 首先,需要下载并安装 MySQL Yum 仓库 RPM 包:sudo rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm2. 更新 Yum 缓存 安装完 Yum 仓库后,更新 Yum 缓存:sudo yum clean all sudo yum makecache3. 安装 MySQL 现在可以…

在stable diffussion中完美修复AI图片

无论您的提示和模型有多好,一次性获得完美图像的情况很少见。修复小缺陷的不可或缺的方法是图像修复(inpainting)无论您的提示和模型有多好,一次性获得完美图像的情况很少见。 修复小缺陷的不可或缺的方法是图像修复(inpainting)。在这篇文章中,我将通过一些基本示例来介…

51nod 1020 逆序排列

51nod 1020 逆序排列 学习笔记 其实要预处理,但唐的我非要每次都求一遍。 设状态为 \(dp[i][j]\) 选了 i 个数逆序对数为 j 的排序种类数。 首先初始化 \(dp[i][0]=1\) 即没有逆序对,转移方程 \(dp[i][j]=dp[i-1][j]+dp[i-1][j-1]+……+dp[i-1][j-i]\) 这是显然的(放上这个数…

2181.合并零之间的节点

问题描述: 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有…

调谐半导体吸收光谱(TDLAS)技术简介

一、调谐半导体吸收光谱(TDLAS)技术简介 TDLAS是Tunable Diode Laser Absorption Spectroscopy的简称,该技术主要是利用可调谐半导体激光器的窄线宽和波长随注入电流改变的特性,通过调制激光器的波长,使激光器的波长扫描过被测气体分子的吸收峰,从而基于比尔朗伯定律,使气…

极狐GitLab 新一代容器镜像仓库正式上线啦!

从极狐GitLab 17.3 开始,私有化部署实例也可以使用新一代容器镜像仓库啦!新一代容器镜像仓库具有更高效的零宕机垃圾收集功能和其他优势。从去年开始,极狐GitLab 就启动了重构容器镜像仓库的计划,用以构建具有更强功能的镜像仓库,比如零宕机垃圾收集。自从将此功能成功迁移…

集合底层学习笔记

集合的底层原理 数据结构中有 数组 和 链表 来实现对数据的存储,但这两者基本上就是两个极端。数组:数组存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找时间复杂度很小,为O(1);数组的特点是:寻址容易,插入和删除困难。 链表:链表存储区间不连续,占…