- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
初学者的一些定义:flip(n) 是将七段显示字体编号旋转 180 度,因此七段字体中的 2 将翻转为 2。0,1,2,5,8 将是映射到自己。 6 -> 9、9 -> 6 和 3、4、7 未定义。因此,任何包含 3、4、7 的数字都不可翻转。更多示例:flip(112) = 211、flip(168) = 891、flip(3112) = 未定义。
(顺便说一下,我很确定 flip(1) 应该是未定义的,但是作业说 flip(168) = 891 所以关于这个赋值 flip(1) 是定义的)
原始挑战:找到满足以下三个条件的整数 n > 0:
您可以在下面找到的我们的解决方案似乎有效,但至少在 2011 年找不到答案。如果我改用 1991 年(我搜索了一些可以解决问题的“基本”数字)我很快得到一个答复,说 1515151 就是那个。因此,基本概念似乎有效,但不适用于家庭作业中给定的“基础”。 我是不是漏掉了什么?
用伪代码编写的解决方案(我们在 Small Basic 中有一个实现,我用 Java 做了一个多线程的):
for (i = 1; i < Integer.MaxValue; i++) {
n = i * 2011;
f = flip(n, true);
if (f != null && flip(n*n, false) != null) {
print n + " is the number";
return;
}
}
flip(n, symmetry) {
l = n.length;
l2 = (symmetry) ? ceil(l/2) : l;
f = "";
for (i = 0; i < l2; i++) {
s = n.substr(i,1);
switch(s) {
case 0,1,2,5,8:
r = s; break;
case 6:
r = 9; break;
case 9:
r = 6; break;
default:
r = "";
}
if (r == "") {
print n + " is not flippable";
return -1;
} elseif (symmetry && r != n.substr(l-i-1,1)) {
print n + " is not flip(n)";
return -1;
}
f = r + f;
}
return (symmetry) ? n : f;
}
最佳答案
启发式(公认的是最少的实验,主要依靠直觉),如果不优化您的搜索技术数学(例如,采用构造方法来构建一个完美的不包含 3、4、7 且可翻转对称的正方形。与优化计算相反,后者不会显着改变复杂性):
我将从满足 2 个条件的所有数字列表开始(数字和它的翻转是相同的,即翻转对称,并且它是 2011 的倍数),小于 10^11:
192555261 611000119 862956298 988659886 2091001602 2220550222 2589226852 6510550159 8585115858 10282828201 12102220121 18065559081 18551215581 19299066261 20866099802 22582528522 25288188252 25510001552 25862529852 28018181082 28568189582 28806090882 50669869905 51905850615 52218581225 55666299955 58609860985 59226192265 60912021609 68651515989 68828282889 69018081069 69568089569 85065859058 85551515558 89285158268 91081118016 92529862526 92852225826 95189068156 95625052956 96056895096 96592826596 98661119986 98882128886 98986298686
那里有 46 个数字,根据定义和 2011 年的倍数,所有数字都是可翻转对称的,小于 10^11。看起来满足此条件的 2011 的倍数将变得越来越少,因为从统计上看,随着位数的增加,回文的倍数会越来越少。
即对于任何给定的范围,比如 [1, 10^11](如上),有 46 个。对于宽度相等的相邻范围:[10^11+1, 2*10^11],我们可能会猜测找到另一个46左右。但是,随着我们继续以 10 的更高次幂使用相同宽度的间隔,数字的数量是相同的(因为我们分析的是等宽度间隔),尽管回文条件现在落在更多的数字上,因为数字的数量增加了。因此,接近无穷大时,我们期望任何固定间隔上的回文数接近 0。或者,更正式地(但没有证明)对于每个正值 N,给定间隔(预定宽度)的概率为 0 将具有多于 N 的倍数2011 年的回文数。
因此,随着穷举搜索的继续,我们可以找到的回文数将会减少。根据任何发现的回文方 block 可翻转的概率,我们假设回文方 block 均匀分布(因为我们没有分析告诉我们其他情况,也没有理由相信其他情况),然后任何给定方 block 的概率可翻转的 d 位数长度为 (7/10)^d。
让我们从我们找到的最小的这样的正方形开始
192555261 ^ 2 = 37077528538778121
它已经有 17 位数字长,因此它被可翻转定义的概率约为 0.002(约 1/430)。但是当我们到达列表中的最后一个时:
98986298686 ^ 2 = 9798287327554005326596
长度为 24 位,被翻转定义的概率小于 1/5000。
因此,随着搜索继续以更高的数字进行,回文的数量会减少,并且任何找到的回文正方形可翻转的概率也会降低 - 一把双刃剑。
剩下的就是找到某种密度比,并相应地了解找到解决方案的可能性有多大......尽管直觉上很清楚,从概率上讲,找到解决方案的可能性要小得多(这绝不排除那个或甚至存在大量的解决方案(可能是无限多?))。
祝你好运!我希望有人能解决这个问题。与许多问题一样,解决方案通常不像在更快的机器上运行算法或具有更多并行性或更长的时间等那样简单,而是使用更先进的技术或更具创造性的方法来解决问题,这自己更进一步的领域。答案是一个数字,(通常)比用于推导它的方法更不重要。
关于java - 求一个整数 n > 0 满足以下三个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780496/
我想检索具有多个条件的数据,其中每个条件将在特定字段中包含特定关键字。 表结构如下: sid nid cid 数据 50 7 5 ee 50 7 6 AA 50 7 8 ff 51 7 5 ee 51
在 Prolog 中,我经常通过提供模板(包含变量的结构)然后满足其上的一组约束来解决问题。一个简单的例子可能是: go(T) :- T = [_, _, _], member(cat
在设计 FPGA 系统时,我如何粗略估计给定任务所需的逻辑 block 数量? 有人对我对这些常见设备的期望有一个粗略的数量级吗? 串口 使用 CRC32 的数据包解帧器 8 微核 我看过 www.o
我需要编写一段代码,如果函数满足列表中的大多数元素,则返回 True,不满足其中的 false。例如:moreThan odd [1,2,3] 是 True,但是 moreThan odd [1,2,
一旦满足三个条件,我需要使用 componentWillReceiveProps() 来调用我的组件中的方法。其中两个条件将当前 Prop 与下一个 Prop 进行比较,这两个条件通过 Ajax 请求
我正在构建一个主从表单。主视图模型构造细节 View 模型的实例。这些细节 View 模型有几个依赖项,需要用新 类实例来满足。 (这是因为他们需要在独立于主虚拟机的数据上下文中运行的服务层。) 实现
我有以下项目,我已经使用了一段时间。正如您在运行 snnipets 后看到的那样,一切正常。 /* The dark background behind the dialogs */ .dialog-
我正在尝试找出解决此问题的方法: 我想要一个函数来检查文本字段是否填充了文本并且复选框是否被选中。当满足这些条件时,“提交”按钮将启用。如果启用“提交”按钮后不久,用户清除文本字段或取消选中复选框,则
所以我相对较新,我有以下代码,我想知道如何制作这样我可以返回临时变量,同时满足java的返回要求。我希望返回临时值,但由于它位于 if-else block 内,因此从技术上讲,它不会在其外部初始化。
我正在编写一个脚本,该脚本读取文本文件并根据 .txt 文件的内容更改 div 中的文本。 但这不是我的问题。我不想要纯文本,背景颜色应该根据满足 if/elseif/else 函数的条件而改变。 v
我想在 if let 构造中满足多个约束。我知道我们可以使用“,”(逗号)来解包多个值,但它们都必须成功解包。 例如: var str: String? = "Hello" var x: Int? =
当我在 genymotion 模拟设备上安装我的应用程序时,它无法很好地安装,在控制台上我得到“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”我尝试了另一个应用程序,它安装得
因此,我试图根据数据帧的匹配条件来查看数据帧的两个变量(v1 和 v2)是否在其符号(正数或负数)中匹配变量(ID1==ID2)。 示例数据框 - Trial.df: ID1 v1
如果交付一个 Java 应用程序,它使用 gradle 依赖管理和许多来自 maven-central 的开源库,是否足以检查第一级 depedencies 的许可证(因为他们的依赖关系必须再次自动与
我正在尝试创建一个满足接口(interface) Iterable 的类“Gprogram” (这样我就可以在我的 Gprogram 中迭代 Gcommand)。但是,我只能使用类型 Iterable
我想知道是否可以获得一些帮助。 我试图在查询中写入一个查询,我使用 3 个字段:ID、选项和金额。 我需要对我的唯一 ID 进行分组,然后在该组中我需要按选项白色进行拆分,总计每个选项的金额。例如:编
如何在iOS swift项目中配置Jitsi-meet框架开启视频通话服务? 最佳答案 编辑:这也适用于 Xcode Version 12.2 (12B45b)在 Mac OS Big Sur 上。
我正在玩一些交互式菜单,目前有一个隐藏菜单,当按下一个按钮时,它会从右边出现,并将整个内容移到上面。有点像移动 facebook 应用程序。为了确定按钮应该将菜单滑出还是放回我使用 javascrip
我的目标很简单,使用遗传算法重现经典的“Hello, World”字符串。 我的代码基于此 post .代码主要包含4个部分: 生成具有多个不同个体的种群 根据与target的比较,定义评估个体好坏的
问题陈述 我们有一个雇主想要面试 N 个人,因此安排了 N 个面试时段。每个人都有这些时段的忙闲时间表。给出一个算法,如果可能的话将 N 个人安排到 N 个槽位,如果不可能则返回一个标志/错误/等。最
我是一名优秀的程序员,十分优秀!