news 2026/10/23 4:18:51

小红的数位删除【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小红的数位删除【牛客tracker 每日一题】

小红的数位删除

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

小红拿到了两个正整数a aa和b bb,她每次操作可以选择其中一个正整数,删除一个数位。例如,对于" 1243 " "1243""1243"而言,进行一次操作可以生成" 124 " 、 " 123 " 、 " 143 " "124"、"123"、"143""124"、"123"、"143"或" 243 " "243""243"。
小红希望最终a aa是b bb的倍数或者b bb是a aa的倍数。她想知道自己最少的操作次数是多少?

输入描述:

两个正整数a aa和b bb,用空格隔开。
1 ≤ a , b ≤ 10 9 1≤a,b≤10^91≤a,b≤109

输出描述:

如果无法如何都无法使得a aa是b bb的倍数或者b bb是a aa的倍数,则输出− 1 -1−1。
否则输出一个整数,代表小红的最小操作次数。

示例1

输入:

37 111

输出:

0

说明:

111 111111是37 3737的倍数,所以小红不需要任何操作。

示例2

输入:

1234 99

输出:

2

说明:

第一个数删除数字′ 1 ′ '1'′1′,变成234 234234。第二个数删除数字′ 9 ′ '9'′9′,变成9 99。234 234234是9 99的倍数。

解题思路

本题采用二进制枚举+暴力验证的思路求解最小操作次数,核心是用二进制位掩码枚举a 、 b a、ba、b所有可能的数位保留/删除组合:将a aa的每一位对应二进制数的一个比特位(1 11保留、0 00删除),同理处理b bb;遍历a aa的所有掩码(共2 n 2^n2n种)和b bb的所有掩码(共2 m 2^m2m种),计算每种组合下保留的数字x xx(a aa的保留数位组成)、y yy(b bb的保留数位组成)及操作次数o p opop(删除的数位总数);过滤掉x xx或y yy为0 00的无效情况,若x xx是y yy的倍数或y yy是x xx的倍数,则更新最小操作次数a n s ansans;最终若a n s ansans仍为无穷大则输出− 1 -1−1,否则输出a n s ansans。该方法通过枚举所有可能的数位删除组合,暴力验证是否满足倍数条件,虽时间复杂度较高,但因a 、 b a、ba、b位数最多为10 1010位(2 1 0 = 1024 2^10=1024210=1024),实际可高效运行,精准找到满足条件的最小操作次数。

总结

  1. 核心逻辑是用二进制掩码枚举a 、 b a、ba、b所有数位保留/删除组合,计算对应保留数字和操作次数。
  2. 关键验证条件:保留数字非0 00且满足倍数关系,更新最小操作次数。
  3. 最终根据最小操作次数是否为无穷大,输出− 1 -1−1或具体数值。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=2e5+10;constll inf=0x3f3f3f3f3f3f3f3f;intmain(){string a,b;cin>>a>>b;ll ans=inf;ll n=a.size(),m=b.size();for(ll i=0;i<(1<<n);i++){for(ll j=0;j<(1<<m);j++){ll op=0,x=0,y=0;for(ll k=0;k<n;k++){if(i&(1<<k))x=x*10+a[k]-'0';elseop++;}for(ll k=0;k<m;k++){if(j&(1<<k))y=y*10+b[k]-'0';elseop++;}if(!x||!y)continue;if(x%y==0||y%x==0)ans=min(ans,op);}}cout<<(ans==inf?-1:ans)<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 15:47:39

第2章 认识CPU-2.3 32位微处理器(3)

4. 中断处理80386不但保存了8086/8088的所有中断&#xff0c;还增强了很多功能。我们把外部中断称为“中断”&#xff0c;把内部中断称为“异常”。在实模式下&#xff0c;中断的处理和8086/8088完全一样。但是&#xff0c;在保护模式下&#xff0c;80386不再使用简单的中断向量…

作者头像 李华
网站建设 2026/10/14 16:50:15

什么是虚拟路由器

文章目录为什么需要虚拟路由器虚拟路由器是如何工作的虚拟路由器的典型应用虚拟路由器即Virtual Router&#xff0c;是一种软件功能。它是基于云的虚拟路由器&#xff0c;部署在x86服务器硬件的虚拟机实例上&#xff0c;在虚拟化平台上提供路由、交换、安全和VPN等功能&#xf…

作者头像 李华
网站建设 2026/10/5 23:03:48

nodejs+vue融合居民与物业功能的小区垃圾回收奖赏系统

文章目录技术架构设计核心功能模块关键技术实现性能优化策略安全防护措施部署运维方案扩展性设计--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术架构设计 采用前后端分离架构&#xff0c;后端使用Node.js&…

作者头像 李华
网站建设 2026/10/14 23:21:06

论文写不动?AI论文网站千笔AI VS speedai,专科生专属写作神器!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具已经逐渐成为高校学生完成毕业论文的重要助手。尤其是在专科生群体中&#xff0c;面对繁重的论文任务和严格的格式要求&#xff0c;越来越多的学生开始借助AI工具来提升写作效率、降低写作难度。然而&#xff0c;市场上AI…

作者头像 李华
网站建设 2026/10/14 22:13:48

Husky + lint-staged深度解析

# Husky 与 lint-staged&#xff1a;前端代码质量的守护者 1. 他是什么 想象一下&#xff0c;你正在准备一场重要的晚宴。在客人到来之前&#xff0c;你会检查餐桌是否摆正、餐具是否清洁、食物是否新鲜。Husky 和 lint-staged 就是前端项目中的这种“餐前检查员”。 Husky 是一…

作者头像 李华
网站建设 2026/10/14 21:37:06

综述不会写?万众偏爱的AI论文网站 —— 千笔AI

你是否曾为论文的选题而烦恼&#xff0c;反复修改却仍不满意&#xff1f;是否在文献查找中耗费大量时间&#xff0c;却总是找不到合适的资料&#xff1f;又是否因为查重率过高而焦虑不已&#xff1f;对于自考学生来说&#xff0c;论文写作不仅是一道难关&#xff0c;更是一场与…

作者头像 李华