- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在自然数系列中,我们必须在第一遍中删除每个第二个元素。然后在剩余的元素中,在第二遍中删除每第 3 个元素。然后在第 K 遍,从剩余元素中删除每第 (k+1) 个元素。
这个系列会是这样的
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, ...
第一遍后(每删除第二个元素后),
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, ...
在第 2 遍之后,(在删除每第 3 个元素之后),
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, ...
第 3 遍后,(每删除第 4 个元素后),
1, 3, 13, 15, 19, 25, 27, ...
所以,经过infinity pass后,会变成
1, 3, 7, 13, 19, 27, 39, 49, 63, 79, ...
这个系列也称为 Flavius-Josephus 筛。
解决方案,找到系列中的第 6 个元素:
虽然它有效,但我不明白该解决方案是如何工作的?
一个 C 程序是,
int calc(int n)
{
if (n == 1) return 1;
return calc_rec(n*n, n-1);
}
int calc_rec(int nu, int level)
{
int tmp;
if (level == 1) return (nu-1);
tmp = nu % level;
return calc_rec(nu - (tmp ? tmp : level), level-1);
}
解释这个的链接http://oeis.org/A000960
最佳答案
这并没有回答你的问题,但这里推导了一种更直观的算法,用于计算流中任意元素的速度。
我们将包含所有整数的初始序列称为 S[0],然后将 S[1] 称为第一遍后的序列,将 S[2] 称为第二遍后的序列,依此类推。
在系列 S[0] 上,第 N 个整数(从零开始的索引)是 N + 1。
1 2 3 4 5 6 7 8 9 10 ...
在系列 S[1] 上,第 N 个整数是通过访问 S[0] 中的第 (2N) 个元素获得的。注意 2N = N+(N div 1)。 'div'是整数除法,即舍去余数的除法。
1 3 5 7 9 11 13 15 17 ...
在系列 S[2] 中,第 N 个整数是通过访问 S[1] 中的第 N+(N div 2) 个元素获得的。
1 3 7 9 13 15 19 21 ...
在系列S[3]中,第N个整数是通过访问S[2]中的第N+(N div 3)个元素获得的,依此类推。
1 3 7 13 15 19 ...
因此你得到以下递归过程:
get_number(int series, int N):
if (series == 0):
return N + 1
else:
return get_number(series - 1, N + floor(N / series))
但请注意,当 series > N 时,floor(N/series) 完全为零,因此您始终可以将其称为 get_number(N, N)。
例如,
get_number(5, 5) = get_number(4, 6) = get_number(3, 7) =
get_number(2, 9) = get_number(1, 13) = get_number(0, 26) = 27.
这显示了如何从流中获取“27”作为第 6 个(5 但从零开始的索引)。
关于algorithm - 在自然数的第 k 遍中删除每 (k+1) 个剩余元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551404/
我正在运行一个带有 while 约束的 SQL 查询,其中包含一些“id”。例如: SELECT table.id FROM TableOne table WHERE table.id IN (1,
我正在寻找在替换其中一个元素后打印元素列表的最正确方法。我可以按如下方式做,但显然很困惑。 #!/usr/bin/python import sys file = open(sys.argv[1])
这个问题在这里已经有了答案: How wide is the default `` margin? (4 个答案) How do I remove the top margin in a web
当我尝试使用命令安装 rvm 时::(I am Using UBUNTU 12.04 LTS) curl -L https://get.rvm.io | bash -s 当我尝试与简单用户相同的命令时
我使用 GOPro 工作人员 6 个月前发送给我的命令,通过终端(在 Gopro 网络上)使用 Gopro Hero3 拍摄照片/视频。有效。但是,在过去的一个月里,我一直在尝试再次执行此操作,并且不
尽管知道我不应该关闭应用程序按钮,但我仍然这样做。完成所有 Activity 后,我调用 finish() 方法,它们调用析构函数和所有内容。用户的行为也是正确的。但我想知道为什么还有 5 个打开的线
当我在 Rest Controller 中的类级别启用 @Validated spring 注释时,会生成 2 个验证上下文(每个验证上下文都有不同的前缀)。 @Validated 注释是必需的,因为
在旧的 API 中,剩余的允许容量显然作为 X-Ratelimit-Remaining 返回HTTP header 。 然而,current version's documentation对此一无所获
我一直在使用 Service Fabric 一段时间,成功构建、部署和测试了多个服务,但我刚刚完成构建的服务在部署时失败(请参阅下面的错误)。在诊断中,我尝试使用 VS 模板(没有代码更改)创建和部署
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Progress unit in ProgressDialog 如何覆盖进度条进度消息,即 61/100 到
我正在用 Objective-C (Cocoa) 编写命令行实用程序的前端。我需要解析输出以检查不同类型的消息。有两种基本类型;信息消息和下载状态消息。信息消息始终以以下内容之一开头:INFO:、WA
我是一名优秀的程序员,十分优秀!