给定正整数m
,找到a
,b
,c
,d
四个整数a^2 + b^2 + c^2 + d^2 = m
O(m^2 log m)
}}。可以使用额外的空间。
我可以想到O(m^3)
解决方案,但我对O(m^2 logm)
解决方案感到困惑。
答案 0 :(得分:0)
第一次提示:
将平方元素从1到m ^ 2排序的复杂性是什么
第二个提示:
看看这篇文章寻求帮助:
Break time, find any triple which matches pythagoras equation in O(n^2)
第三个提示:
如果您需要更多帮助:(来自之前帖子的yi_H回复):
我猜O(n ^ 2 log n)将对数字进行排序,取任何两个 对(O(n ^ 2))并查看c ^ 2的数量中是否有c = a ^ 2 + b ^ 2。您可以使用二进制搜索来查找c,即 为O(log(N))。
作者:yi_H
现在比较n和sqrt(m)
希望你能找到解决方案。
答案 1 :(得分:0)
拉格朗日有一个经典定理,即每个自然数都是四个方格的总和。
关于这个主题的Wikipedia页面提到有一个随机算法用于计算在O(\ lg ^ 2 m)时间内运行的表示(上面的所有建议都是m中的多项式,即它们是问题实例大小的指数(因为数字m可以用\ lg m位编码)。
顺便说一句,拉格朗日定理证明了整数的加法和时间的不可判定性(因为自然界是不可判定的,并且可以根据定理用加号和次数定义整数)。