找符合条件的整数

编程之美——找符合条件的整数 题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0.解决这个问题首先考虑对于任意的N,是否这样的M一定存在。可以证明,M是一定存在的,而且不唯一。简单证明:因为 这是一个无穷数列,但是数列中的每一项取值范围都在[0, N-1]之间。所以这个无穷数列中间必定存在循环节。即假设有s,t均是正整数,且s,所以例如,取N=3,因为10的任何 阅读详情

 找符合条件的整数

任意给定一个正整数N,求一个最小的正整数M(M >1),使得N * M的十进制表示形式里只含有1和0。

最初的解法

看了题目要求之后,我们的第一想法就是从小到大枚举M的取值,然后再计算N * M,最后判断它们的乘积是否只含有1和0。大体的思路可以用下面的伪代码来实现:

for(M = 2; ; M++)

{

    product = N * M;

    if(HasOnlyOneAndZero(product))

        output N, M, Product, and return;

}

但是问题很快就出现了,什么时候应该终止循环呢?这个循环会终止吗?即使能够终止,也许这个循环仍需要耗费太多的时间,比如N = 99时,M = 1 122 334 455 667 789,N * M = 111 111 111 111 111 111。

 

相关资源:

《编程之美》编辑部 | 《编程之美》豆瓣 | 《编程之美》互动网购买 | 作者Blog

作者豆瓣

编程之美2.8——找符合条件的整数 问题: 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。 解法: 由于没有直接的数学方法能帮我们直接得到M的值,所以我们只能进行搜索。由于相对M,乘积N*M具有明显的特征,需要搜索的空间要小很多,所以我们对乘积N*M进行搜索。如果N*M的结果有K位,则要循环2^K次,我们发现K的结果能轻易超过40,所以这个运行时间还是相当长。 同余运 阅读详情

相关推荐

Python小白避坑指南:用Ursina做3D图形,Entity的scale和color参数到底怎么调才不出错?

本文详细解析了Python Ursina引擎中Entity对象的scale和color参数调优技巧,帮助3D图形编程初学者避开常见陷阱。通过对比实验和典型场景分析,深入讲解三种缩放方式的区别、颜色定义的四种方法,以及参数组合的协同效应,助力开发者精准控制3D图形表现。

weixin_26782929的博客 412

【面试】快速寻找满足条件(两个数的和为指定值)的两个数

[quote]【面试】快速寻找满足条件(两个数的和为指定值)的两个数[/quote]题目: 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的数字,为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。 解法: 思路1: 暴力穷举O(n^2) 思路2: 对数组预排序O(NlogN),然后遍历该数组,...

宋轶山 224

别再手动抓波形了!用Synopsys AXI VIP的Port Monitor自动收集事务数据(附完整连接Scoreboard代码)

当标准Port Monitor无法满足需求时,Synopsys提供的callback机制就像一套精密的手术工具,允许你深入VIP内部进行定制化改造。创建自定义监控点的四步法继承基类// 其他自定义字段...endclass重写目标phase方法// 克隆事务并发送到自定义端口在env中注册callbackcustom_cb);连接自定义端口到分析组件经典应用场景地址phase特定检查数据beat级监控自定义性能统计异常注入检测。

weixin_28716181的博客 397

编程之美-找符合条件的整数

题目: 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N * M的十进制表示形式里只含有1和0。 看了题目,我很自然的想到了枚举。然后看N * M的十进制是否只包含1和0。当然,这种暴力的解法不是我们想要的。 换一种枚举方法,我们枚举N*M的取值效果怎么样呢?因为N * M的只包含1和0,所以对于K位的N*M,需要搜索2的K次方。 因为找的是最小整数,所以可以采用BFS

...... 3830

Ubuntu 上 1Panel 的安装与高效运维实践

本文详细介绍了在Ubuntu系统上安装和高效运维1Panel面板的完整实践指南。内容涵盖了一键安装、Docker容器可视化部署、计划任务自动化以及网站数据库管理等核心功能,并提供了安全加固、资源监控与数据备份等进阶技巧,旨在帮助用户快速搭建并管理一个强大易用的服务器环境。

weixin_29210759的博客 143

Blender骨骼绑定实战:如何用IK控制器让角色动作更自然(附常见问题解决)

本文深入探讨了Blender中IK控制器的实战应用,旨在解决角色动作僵硬问题。通过对比IK与FK的核心差异,详细解析了IK链的构建、参数设置及极向目标的使用,并提供了控制器定制、IK/FK无缝切换等高级技巧,帮助动画师实现更自然、符合直觉的角色动画。

weixin_29243279的博客 438

编程之美——2.8 找符合条件的整数

题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解决这个问题首先考虑对于任意的N,是否这样的M一定存在。可以证明,M是一定存在的,而且不唯一。 简单证明:因为   这是一个无穷数列,但是数列中的每一项取值范围都在

wens07的专栏 982

深入学习FIFO

深入理解FIFO、同步FIFO和异步FIFO、FIFO设计的难点以及FIFO深度计算

好好学习,天天向上 2648

试题答案_找符合条件的整数

BOPGroup的专栏 1591

【原理图与PCB专题】使用Cadence如何在Layout时直接互换相同功能的PIN

Cadence允许我们在PCB中互换管脚,最后再反标给原理图。集成TVS管、排阻、DDR、FPGA有一些PIN是完全相同功能,可进行管脚互换的,建议使用这个功能。可降低硬件工程师与Layout工程师之间沟通成本,加快设计进度。

一点硬件 801

04 Zabbix自定义触发器

1、触发器是什么 触发器表达式:允许定义一个什么状况的数据是“可接受”的阈值。因此,如果接收的数据超过了可接受的状态,则触发器会被触发 , 或将状态更改为异常。 一个触发器可以拥有下面几种状态: 值 描述 OK 这是一个正常的触发器状态。在旧版本的Zabbix中称为FALSE。 PROBLEM 通常意味着发生了某些事情。例如,处理器的负载较高。在旧版本的Zabbix中称为TRUE。 2、创建触发器TRIGGER 案例:系统超过3个用户登录,则告警。 2.1 开启告警声

Jian Sun_的博客 1540

编程之美:找符合条件的整数

问题描述: 任给正整数N,求最小正整数M,使得N*M的十进制表示形式里只含1和0 #include #include using namespace std; #define MAX 1007 vector> BigInt(MAX); int main(){ int N=99; for(int i=0;i<N;i++) BigInt[i].clear(); BigInt[

王川的私房菜 1264

SOME/IP协议详解「2.1.2·Payload数据类型序列化」

SOME/IP协议详解「2.1.2·Payload数据类型序列化」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.1.2·Payload数据类型序列化」1 大小端问题2 数据对齐填充问题3 都有哪些数据类型 之前简单的概括了一下序列化/反序列化,就是降维打击,从这一章开始到2.1所有章节结束,都在讲解这个降维打击的详细规则与原理 1 大小端问题 首先什么是大小端: 大端:高字节存放到内存的低地址 小端:高字节存放到内存的高地址 假如有一个数据是0x12345678

雪云飞星的博客 4627

《编程之美》找符合条件的整数之C语言实现

《编程之美》2.8 找符合条件的整数。 任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0。 作者经过对问题的分析,把计算两个数相乘结果转变成了对余数信息的处理。通过算法思想的转换简化了问题的处理过程,并在处理余数的过程中,把中间过程的余数信息保存下来,这也避免了大量的浪费效率的模运算。同时,由于所要求的结果可能很大,我们采用bit位图的方式,用在相

nevasun的专栏 1680

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

找符合条件的整数 (python)

任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示式中只能含有1和0. 当前问题可以转换为求一个最小的正整数X,使得X的十进制表示形式里只含有1和0,并且X被N整除。这样一来就是求Y对N取模的余数。当有两个余数加起来等于N,则Y=X。 N = 99 BigInt = [[] for _ in range(N+1)] BigInt[1].append(0) # 10^0 = 1 NoUpdate = 0 i, j = 0, 1 # i为十进制的第几位, j为十进制第几位为

qq_43211230的博客 1970

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: 我想成为一只IT小小鸟
下一篇: 连载12:时分秒针重合——看似简单的面试题
BOPGroup
博客等级 码龄17年 2525粉丝 306原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值