【蓝桥杯每日一题】X 进制减法

news/2024/12/11 15:18:08/

X 进制减法

2024-12-6 蓝桥杯每日一题 X 进制减法 贪心 进制转换

题目大意

进制规定了数字在数位上逢几进一。

XX 进制是一种很神奇的进制, 因为其每一数位的进制并不固定!例如说某 种 XX 进制数, 最低数位为二进制, 第二数位为十进制, 第三数位为八进制, 则 XX 进制数 321 转换为十进制数为 65 。

现在有两个 XX 进制表示的整数 AA 和 BB, 但是其具体每一数位的进制还不确 定, 只知道 AA 和 BB 是同一进制规则, 且每一数位最高为 NN 进制, 最低为二进 制。请你算出 A−BA−B 的结果最小可能是多少。

请注意, 你需要保证 AA 和 BB 在 XX 进制下都是合法的, 即每一数位上的数 字要小于其进制。

解题思路

刚开始看这道题的时候是没有看懂X 进制数是怎么转换成十进制的。

先来看一个二进制数怎么转换成十进制:

11111 = > 1 ∗ 2 ∗ 2 ∗ 2 ∗ 2 + 1 ∗ 2 ∗ 2 ∗ 2 + 12 ∗ 2 + 1 ∗ 2 + 1 = 31 11111 => 1 * 2 * 2 * 2 * 2 + 1 * 2 * 2 * 2 + 1 2 * 2 + 1 * 2 + 1 = 31 11111=>12222+1222+122+12+1=31

注意观察到,因为这个11111的每一位都是作为二进制的数,那么在计算的时候它需要乘上当前位置前后面的所有2 不包括自己。

类比本题的例子来说:

321 = > 3 ∗ 10 ∗ 2 + 2 ∗ 2 + 1 = 65 321 => 3*10*2 + 2*2 + 1 = 65 321=>3102+22+1=65

同样是某一位上的数num[i] * 它后面所有的进制

之后就是先判断这个每一位对应的进制,由于想要最小值,那么由以上的计算过程可知,只需让每一个进制取到最小值即可,当然最小是二进制。

代码相关解释都在注释中。

Accepted
#include <iostream>using namespace std;
typedef long long ll;
const int N = 100010,mod = 1000000007;
int a[N],b[N],n,m;
ll c[N];    // 存储进制前缀积int main()
{cin>>n>>m;for(int i = m;i >= 1;i--) {cin>>a[i];}int len = m;cin>>m;for(int i = m;i >= 1;i--) {cin>>b[i];}c[0] = 1;len = len > m ? len : m;    for(int i = 1;i <= len;i++) {// 确定进制int t = max(a[i],b[i]);c[i] = max(2,t+1);c[i] = c[i-1]*c[i] % mod;   // 计算前缀积}ll res = 0;for(int i = 1;i <=  len;i++) {res = (res+(a[i]-b[i])*c[i-1]%mod)%mod;}// 虽然题目中表明A > B但是取模之后的值不一定是A大,所以最后要做将负数转为正值的操作// 那么先加mod就是为了补充A的不足而加的// 最后为了防止res的值为负,进行加mod再取模,将其转换为正值4.如果不处理这点会过50%cout<<(res + mod) % mod<<endl;return 0;
}
备注

想要一起备赛的小伙伴添加一下 !

在这里插入图片描述


http://www.ppmy.cn/news/1554248.html

相关文章

Xilinx IDDR和 ODDR原语使用和仿真

// IODDR 回环 &#xff0c;使用 SAME_EDGE 模式&#xff0c;注意的是 从 ODDR输出 时钟需要偏移90度&#xff0c;不然数据 上下沿采样错误 // 数据从 IDDR 输出时&#xff0c;最好将 数据和 frame 有效信号 同步在偏移90度的时钟下 // 本测试内容 是 50MHZ 的 8bit &#xff0…

【jvm】为什么要有GC

目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存&#xff0c;这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理&#xff0c;降低了内存泄漏和内存溢出等问…

深信服ATRUST与锐捷交换机端口链路聚合的配置

深信服ATRUST业务口原来只配置使用一个电口&#xff0c;近期出现流量达到800-900M接近端口的极限带宽。由于设备没有万光口&#xff0c;于是只好用2个光口来配置链接聚合。 下需附上深信服ATRST端口配置的截图&#xff0c;由于深信服ATRUST与锐捷交换机端口只共同支持源mac目的…

SQL UCASE() 函数:转换字符串为大写

SQL UCASE() 函数&#xff1a;转换字符串为大写 概述 在SQL中&#xff0c;UCASE() 函数用于将字符串中的所有字符转换为大写。这是一个非常实用的函数&#xff0c;尤其在处理大量文本数据时&#xff0c;确保数据的一致性和准确性。本文将详细介绍UCASE() 函数的用法、示例以及…

easyocr配置及相关训练

easyocr配置及相关训练 1&#xff0c;相关链接2&#xff0c;安装配置3&#xff0c;官方模型测试4&#xff0c;自定义数据集训练及测试&#xff08;1&#xff09;标签转换脚本&#xff08;2&#xff09;生成lmdb数据格式&#xff08;重要&#xff09;&#xff08;3&#xff09;预…

【系统设计】高可用之缓存基础

缓存的缘起 使用缓存的主要原因包括提高系统性能、降低数据库负载、提升用户体验和保证系统可用性。‌ 在计算机体系结构中&#xff0c;由于处理器和存储器的处理时间不匹配&#xff0c;在处理器和一个较大较慢的设备之间插入一个更小更快的存储设备&#xff08;如高速缓存&a…

深入浅出特征的维度与个数【大白话版】

一、矩阵中的基本概念 在机器学习和深度学习中&#xff0c;数据通常以矩阵的形式表示&#xff1a; 行&#xff08;Rows&#xff09;&#xff1a;代表 样本数量&#xff08;data points&#xff09;&#xff0c;也就是点云中的点数列&#xff08;Columns&#xff09;&#xff…

dolphinScheduler 任务调度

#Using docker-compose to Start Server #下载&#xff1a;https://dlcdn.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-src.tar.gz $ DOLPHINSCHEDULER_VERSION3.1.9 $ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.t…