任意给定一个正整数 N,求一个最小的正整数 M ( M>1 ),使得 N*M 的十进制表示形式里只含有 1 和 0.
假设对所有的 1,0 组合数字进行搜索
,则形成一个树
1
10 11
100 101 110 111
...
n 层的书,第 k 层树个数 2^(k-1) 假设数字在m层总搜索次数为 o(2^m),改进:
假设 x y 为树中两个数 x%M == y%M ,则 10*x%M == 10*y%M (10*x+1) %M==(10*y+1)
则 假设 x < y 则 y 所在的子树实际上已经剪枝,该子树不需要在考虑了。
树结点访问问题:
可以用队列实现层次结构访问,在访问的同时进行剪枝。
function getMinInt(n) {
if(n==1) return 1;
//利用队列层次遍历
var queue=[];
queue.push({
value : 1,
remainer : 1
});
var knownRemainers={};
while(true){
var r=queue.shift();
if(r.remainer==0) return r.value/n;
for(var i=0;i<2;i++) {
var nextVlaue=r.value*10+i;
var nextRemainer=(r.remainer*10+i)%n;
//相同余数剪枝操作
if(!knownRemainers[nextRemainer]) {
knownRemainers[nextRemainer]=true;
queue.push({
value : nextVlaue,
remainer : nextRemainer
});
}
}
}
}
(function() {
alert(getMinInt(3));
})();
分享到:
相关推荐
4. **条件语句**:判断分数是否符合特定规律,例如,分数的分母是否为连续整数或者与分子有某种关系。 5. **数据类型**:理解分数作为一种特殊的数值类型,以及如何在Scratch中表示分数。 6. **事件处理**:可能涉及...
【角谷猜想】是数学领域一个著名的数论问题,它非常适合用编程来探索和学习。...这不仅锻炼了他们的逻辑思维能力,还培养了他们解决问题和独立思考的习惯,符合童程童美的教育理念,让编程教育更加趣味盎然。
《数独游戏——少儿编程Scratch项目》是一个旨在教授儿童编程知识和逻辑思维能力的案例。这个项目通过创建一个互动的数独游戏,让孩子们在娱乐中学习编程基础。Scratch是麻省理工学院(MIT)媒体实验室“终身幼儿园...
`(选项B)中`%`运算符仅适用于整数类型,因此不符合语法。 - **条件表达式**:如`(b = 3, c = 4, b + c)`(选项C)中的逗号表达式,先执行从左至右的赋值操作,最后返回最后一个表达式的值。 #### 3. 循环与数组...
程序需要能够从输入中获取汇率和要转换的货币数量,同时还需要校验输入数据的合法性,例如输入数据是否为大于0的整数,货币类型是否正确,以及是否满足“最大兑换(MAX)”或“最小兑换(MIN)”的条件。 4. 字符串分割...
Python是高级的、解释型的编程语言,支持面向对象、命令式编程、函数式编程和过程式编程。Python语言具有简单易学、代码简洁、功能强大等特点,广泛应用于人工智能、数据科学、Web开发、自动化运维等领域。 1. abs...
由于回文数的特性,我们可以通过遍历一定范围内的所有整数来检查它们是否符合特殊回文数的条件。以下是一个简单的示例,从10到99999枚举所有整数: ```python for i in range(10, 100000): if is_palindrome(i) ...
在 Java 中,当两个整数进行除法运算("/")时,结果也将是一个整数,会自动截断小数部分。例如,x = 53,x / 2 = 26。 3. **变量类型**: Java 中的成员变量分为实例变量和类变量。实例变量未用 `static` 关键字...
每次找到一个符合条件的数,我们就增加`size`的值。根据`size`的值决定如何打印结果。如果`size`为0,说明是第一次找到水仙花数,直接输出该数;否则,由于`size`已经递增,说明之前已经找到过水仙花数,因此在输出...
3. **优化策略**:采用混合整数线性规划(MILP)的方法,将不同类型的河流之旅作为决策变量,通过求解得到最优的安排方案。 #### 结论 通过对大隆河河流之旅的数学建模,可以有效地解决如何增加河流之旅数量的同时...
- 如果新元素已经在`set`中,说明找到了符合条件的索引对。 - 这种方法类似滑动窗口,可以更高效地处理重复元素。 ### 关键知识点: 1. **滑动窗口**:在数组或字符串中寻找特定子序列的一种常用技巧,通常涉及两个...
例如,可能使用了回溯法、动态规划或者遗传算法来寻找符合条件的数字排列。 压缩包内的文件提供了关于这个幻方的更多信息。`r5n729.htm`可能是介绍幻方的网页文档,包含详细解释和展示;`readme.txt`是常见的说明...
在MATLAB编程环境中,开发num2money函数是一个实用的功能,它能够将数值转换为符合货币格式的字符串。这个功能在处理财务数据或者显示经济相关的计算结果时尤其有用。MATLAB作为一门强大的数值计算语言,提供了丰富...
3. **解决方案**:可以通过嵌套循环来遍历所有可能的情况,再通过条件判断去除不符合要求的组合。 #### 示例代码: ```c #include int main() { int i, j, k; printf("Possible unique three-digit numbers:\n...
**基本类型**是指编程语言中最基础的数据类型,如整数、浮点数和布尔值。这些类型直接由编程语言支持,而不是通过类实现。 #### 片段 (Fragments) **片段**是指代码的一部分,它可能无法独立运行。在编程中,片段...
**水仙花数**这一概念,将数学美与编程结合得淋漓尽致。在Java中,我们可以利用循环遍历一个数字范围,并将每个数字拆分为个位、十位和百位,分别进行立方和运算,以判断其是否满足水仙花数的条件。程序3提供了一种...
运筹学是一门应用数学学科,它通过优化方法来解决实际问题,特别是在资源有限的...这涉及到对模型的编程和求解,以找出最佳的x1j、x2j和x3j值。通过分析不同场景下的结果,可以为戴维斯公司提供劳动力安排的决策建议。
可以重新定义内建的运算符,使其符合特定类的需求。 ```ruby class Point attr_accessor :x, :y def initialize(x, y) @x = x @y = y end def +(other) Point.new(@x + other.x, @y + other.y) end end...