- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题定义:
这是codewars的问题.
定义一个自反转电源序列,S,为:
S(0) = 0
S(1) = 1
S(2) = 1^2 + 2 = 3
S(3) = 1^3 + 2^2 + 3 = 8
...
S(n) = 1^n + 2^(n-1) + ... + (n-1)^2 + n
实现一个带有 2 个参数(num_dig 和 ord_max)的函数,并找到序列中小于 num dig 的最小数字,它也有 ord_max 个数字。
如果有一个数字的位数正确,结果应该是一个数组,格式如下:
[True, smallest found term]
[False, -1]
这些是一些例子:
n-th Term Term Value
1 0
2 1
3 3
4 8
5 22
6 65
7 209
8 732
9 2780
10 11377
11 49863
12 232768
13 1151914
14 6018785
因此示例测试包括:
min_length_num(5, 10) == [True, 10] # 10th term has 5 digits
min_length_num(7, 11) == [False, -1] # no terms before 13th has 7 digits
min_length_num(7, 14) == [True, 13] # 13th term already has 7 digits
我的方法:
我创建了一个生成器,它生成幂级数 S 的所有值,直到值 n:
def seq(n):
for i in range(n):
s = range(i+1)
j = i+1
tot = 0
while j > 0:
for k in s:
tot += k**j
j -=1
break
yield tot
然后我检查生成器的值,并且:要么在遇到第一个具有所需位数的值时立即返回 True,否则返回 False:
def min_length_num(num_dig, ord_max):
i = 1
for n in seq(ord_max):
if len(str(n)) == num_dig:
return [True, i]
elif len(str(n)) > num_dig:
break
i +=1
return [False, -1]
这通过了所有测试,但由于超时而未完成测试过程。输入范围假定 ord_max <= 1000。
我对生成器不是很精通,所以也许我在那里做错了什么,或者做得不合适。我会很感激一些帮助。谢谢。
编辑:另一个解决方案。
因为我知道 ord_max <= 1000,所以我可以预先计算所有值并修改代码如下:
p = [n for n in seq(1000)]
def min_length_num(num_dig, ord_max):
i = 1
for k in p[:ord_max]:
if len(str(k)) == num_dig:
return [True, i]
elif len(str(k)) > num_dig:
break
i +=1
return [False, -1]
这更快并且解决了我的问题,但我发现它是一个非常丑陋的解决方案,更像是一个肮脏的 hack。我想要更好的东西。
最佳答案
不是完整的解决方案,而是一些优化提示:
您不需要一次又一次地计算自然数的所有幂 - 我怀疑取幂是相当长的操作。而是存储当前功率列表,并在每一步将 power[k]
乘以 k
1 4 3 //3rd stage
1 8 9 4 //4th stage
并用新旧功率之差更新和值
S(4) = S(3) + (8-4) + (9-3) + 4 = 22
同时预先计算所需位数的目标值
powten = 10**(num_dig-1) //1 000 000 for num_dig=7
并在不转换为字符串的情况下将总和与 powten
进行比较
关于python:涉及幂级数的问题的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868811/
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我有一个在 ab 时间内运行的算法,其中 a 和 b 都是单独的输入。 我的算法还是多项式时间复杂度算法还是nn?我认为 nn 不是多项式,但我仍然不确定。 我看到 n 算法的阶乘仍然评估为 nn 复
这个问题在这里已经有了答案: Logical operators (AND, OR) with NA, TRUE and FALSE (2 个回答) 1年前关闭。 由于“is.na(NA)”返回真,“
假设我有一个具有以下结构的 Pandas 数据框: df = pd.DataFrame(dict(a=["x", "x", "y"], b=[0, 1, 1], c=[1, 2, 2])) 我想按 a
谁能帮我处理一些相当复杂的 Django 查询? 这些是我的模型: class County(models.Model): name = models.CharField(max_length
我想从某个表中选择一行并根据另一个表对结果进行排序。 这是我的表: lang1_words: word_id - word statuses: word_id - status 在每个表中 word_
我是单元测试的新手,所以请对我宽容一些。我有一些查询 RESTful API 的模块。我发现在每个测试套件中,我都使用几行代码来启动一个简单的 ExpressJS Web 服务器,以模拟一些我可以从测
假设我有以下代码: var blinker = function(element){ if(stopped){ return; } else { var sampleMappi
我正在用 JavaScript 制作一个选择你自己的冒险风格的游戏,在本节中: evade = prompt("Go out of your way to avoid them, just in ca
我的代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Events1 extends
我正在使用 scipy ode 来解决钟摆问题。 from scipy import * import matplotlib.pyplot as plt from scipy.integrate im
我有一个 Google 表格,用于收集客户的注册数据。收集的数据包括学生的姓名、学生选择参加的类(class)以及信用卡号。提交后,我会收到通知。收到通知后,我会转到我的 Google 表格并从信用卡
我需要定义一个操作的两个版本,定义略有不同。它是一系列包含Nat指数的成分。 open import Data.Nat data Hom : ℕ → ℕ → Set where id : (
我正在研究游戏引擎 http://ducttape-dev.org使用 boost 作为依赖项之一。有一天,当我正在编写一个链接到我的游戏引擎的测试应用程序时,OgreProcedural 的 Ext
我正在 Android 中制作一个表达式计算器,所以我想在实际计算答案之前检查字符串是否符合有效表达式的条件。 我在 Java 中试过这个正则表达式: ^\s*([-+]?)(\d+)(?:\s*([
我有以下 postgresql 查询(为便于阅读而简化): select * from a_view where a in (select * from a_function(a_input))
我开始更好地掌握 PostgreSQL 索引,但我遇到了 OR 条件的问题,我不知道如何优化我的索引以加快查询速度。 我有 6 个条件,当单独运行时,它们的成本似乎很小。下面是修剪查询的示例,包括查询
有谁知道为什么下面的代码接受诸如123-123-1234这样的答案: [1-9]\\d{2}-[1-9]\\d{2}-\\d{4} 我想到了代码,它只接受先接受 2 个数字,再接受 2 个数字,然后再
在使用 Java 1.8u40 打开带有提示类型和附加的 StringConverter 的组合框时,我遇到了以下错误。这可以追溯到执行 FXML 的团队留下的示例字符串,与 Controller 中
在 MySQL 中,我有三个不同的数据库 - 我们将它们称为 A、B 和 C。 是否可以执行涉及所有三个数据库(A、B、C)中的表的事务? (所有数据库都在同一服务器上) 最佳答案 是的,你可以。这是
我是一名优秀的程序员,十分优秀!