漳州罐体保温 2026-07-21: 可由多种立和构造的整数。用go谈话, 给定个正整

发布日期:2026-07-22 点击次数:180
铁皮保温

2026-07-21:可由多种立和构造的整数。用go谈话漳州罐体保温,给定个正整数上限 n,个正整数 x 被称为“好整数”,当且仅当它不错默示为两组不同的正整数对 (a, b) 的立和,其中 a 和 b 齐是正整数且欢乐 a ≤ b。换句话说,存在至少两种不同的 (a, b) 组合,使得 x = a³ + b³。当今需要找出整个不外 n 的好整数,并将它们按从小到大的规则以列表情势复返。

1

输入: n = 4104。

输出: [1729,4104]。

阐明注解:

在小于便是 4104 的整数中,好整数包括:

1729:1³ + 12³ = 1729,以及 9³ + 10³ = 1729。

4104:2³ + 16³ = 4104,以及 9³+ 15³ = 4104。

因此,谜底是 [1729, 4104]。

题目来独力扣3890。

大体武艺如下:

、瞻望算阶段(init函数)

1. 笃定摆设界限

• 上限 mx = 1_000_000_000。

• 关于 a,从1起初摆设,直到a³ > mx/2适度。

为什么是mx/2?因为咱们要找a³ + b³ ≤ mx且a ≤ b,当a³自己就过mx/2时,即使小的b = a,和也会过mx,是以需继续摆设。

2. 双层轮回摆设整个 (a, b)组合

• 外层轮回摆设 a,内层轮回摆设 b(从 a 起初,保证 a ≤ b)。

• 内层轮回圮绝条目是 a³ + b³ > mx,旦过就 break 内层轮回。

• 对每对 (a, b),谋略 x = a³ + b³,并在个哈希表 cnt 中统计该值出现的次数。

3. 筛选好整数

• 遍历哈希表 cnt,关于出现次数 c > 1 的 x,阐明它至少不错由两组不同的 (a, b) 默示,因此将其加入 goodIntegers 列表。

• 这里莫得存储具体组合,只温存出现次数是否大于 1。

4. 排序

• 用 slices.Sort 将 goodIntegers 从小到大排序,以便后续二分查找。

备注: 题目描画提到“两组不同的正整数对”,代码中当 c > 1 即判定为好整数。这是正确的,因为摆设时保证了 a ≤ b,是以同个 x 如果有多个计数,势必对应不同的 (a, b) 组合(组合序但已通过 a ≤ b 模范默示)。

二、查询阶段(findGoodIntegers函数)

1. 二分查找

• 调用 sort.SearchInts(goodIntegers, n+1),在已排序的 goodIntegers 中查找个 大于 n 的元素的下标 i。

• 由于 goodIntegers 是升序的,整个下标

2. 复返后果

• 复返切片 goodIntegers[:i],铁皮保温即整个不外 n 的好整数,还是是有序的。

三、主函数中的示例

四、复杂度分析

1. 瞻望算的技巧复杂度

• 外层轮回 a 的界限:a³ ≤ 5e8(即 mx/2),是以 a 简易 ∛(5e8) ≈ 793。

• 内层轮回 b 的界限:关于每个 a,b 从 a 起初,直到 b³ ≤ mx - a³。

总摆设的 (a, b) 对的数目简易是整个欢乐 a ≤ b 且 a³ + b³ ≤ 1e9 的组合数。

• 这是个二维区域内的整点数,量不错通过积分揣度:

• 条目 a³ + b³ ≤ 1e9,且 1 ≤ a ≤ b。

• 平直摆设点对数目约为 O(N^(2/3)),这里 N = 1e9,是以 N^(2/3) = (1e9)^(2/3) = 1e6 别。

• 骨子上这么的整数对数目简易是 几十万到百万摆布。每次谋略 a³ + b³ 和哈希表操动作 O(1),是以瞻望算的总技巧在可给与界限内,记为 O(M),其中 M 是欢乐条目的 (a, b) 对的数目(约 10^5 ~ 10^6)。

2. 瞻望算的空间复杂度

• 哈希表 cnt 存储整个可能的 a³ + b³ 值,不同值的数目小于便是 M,亦然 O(M)。

• goodIntegers 存储出现次数 >1 的值,数目远小于 M(题目提到共 1554 个),可视为 O(G),G 是好整数数目。

• 全体特别空间复杂度为 O(M)。

3. 单次查询的技巧复杂度

• 只消次二分查找:sort.SearchInts 技巧复杂度 O(log G),G ≈ 1554,险些常数技巧。

• 空间复杂度:复返切片可平直援用全局数组的部分,莫得特别分派,O(1) 特别空间。

转头:

• 总技巧复杂度:瞻望算 O(M)(约 10^5 ~ 10^6 别),单次查询 O(log G)(险些常数)。

• 总和外空间复杂度:O(M),主如果哈希表存储整个不同立和的计数。

Go齐全代码如下:

.

package main

import (

"fmt"

"slices"

"sort"漳州罐体保温

)

var goodIntegers []int// 1554 个

func init {

const mx = 1_000_000_000

cnt := map[int]int{}

for a := 1; a*a*a

for b := a; a*a*a+b*b*b

cnt[a*a*a+b*b*b]++

}

}

for x, c := range cnt {

if c > 1 {

goodIntegers = append(goodIntegers, x)

}

}

slices.Sort(goodIntegers)

}

func findGoodIntegers(n int) []int {

i := sort.SearchInts(goodIntegers, n+1)

return goodIntegers[:i]

}

func main {

n := 4104

result := findGoodIntegers(n)

fmt.Println(result)

}

Python齐全代码如下:

.

# -*-coding:utf-8-*-

def init_good_integers:

"""运转机好整数列表,这些数不错用至少两种式默示为两个立数之和"""

mx = 1_000_000_000

cnt = {}

a = 1

while a * a * a

b = a

while a * a * a + b * b * b

val = a * a * a + b * b * b

cnt[val] = cnt.get(val, 0) + 1

b += 1

a += 1

good_integers = []

for x, c in cnt.items:

if c > 1:

good_integers.append(x)

good_integers.sort

return good_integers

def find_good_integers(n, good_integers):

"""复返整个不大于 n 的好整数"""

result = []

for x in good_integers:

if x

result.append(x)

else:

break

return result

def main:

good_integers = init_good_integers

n = 4104

result = find_good_integers(n, good_integers)

print(result)

if __name__ == "__main__":

main

C++齐全代码如下:

.

#include

#include

#include

#include

using namespace std;

vector goodIntegers;

// 全局运转机器

namespace {

struct InitGoodIntegers {

InitGoodIntegers {

const int mx = 1'000'000'000;

unordered_map cnt;

for (int a = 1; a * a * a

for (int b = a; a * a * a + b * b * b

int val = a * a * a + b * b * b;

cnt[val]++;

}

}

for (const auto& [x, c] : cnt) {

if (c > 1) {

goodIntegers.push_back(x);

}

}

sort(goodIntegers.begin, goodIntegers.end);

}

} initGoodIntegers;

}

vector findGoodIntegers(int n) {

auto it = upper_bound(goodIntegers.begin, goodIntegers.end, n);

int idx = distance(goodIntegers.begin, it);

return vector(goodIntegers.begin, goodIntegers.begin + idx);

}

int main {

int n = 4104;

vector result = findGoodIntegers(n);

cout

for (size_t i = 0; i

cout

if (i

cout

}

}

cout

return 0;

}

·

咱们深信东说念主工智能为频频东说念主提供了种“增强用具”,并死力于于共享全位的AI学问。在这里,您不错找到新的AI科普著述、用具评测、进步率的阴私以及行业瞻念察。

接待关注“福大大架构师逐日题”,发讯息可获取口试贵府,让AI助力您的异日发展。邮箱:215114768@qq.com相关词条:玻璃棉毡     塑料挤出机     预应力钢绞线    铁皮保温    万能胶生产厂家

1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,均表示默认详情页的描述,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。

热点资讯

推荐资讯