现有n个正整数,n≤100000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤400。

2025-06-28 16:44:24
推荐回答(3个)
回答1:

n≤100000和k≤400。

c=a[i][j]/100;

d=a[i][j]%100;

b[c][d]++;

这几行代码中 c就有可能是超过100的 比如输入的是100000。

这样c=1000。

b[c][d]就越界了。

只需要对每个输入的 进行插入排序,同时只保留前k个就好。

开一个400的数组。

最后a[k-1]就是结果。

含义

和整数一样,正整数也是一个可数的无限集合。在数论中,正整数,即1、2、3……;但在集合论和计算机科学中,自然数则通常是指非负整数,即正整数与0的集合,也可以说成是除了0以外的自然数就是正整数。正整数又可分为质数,1和合数。正整数可带正号(+),也可以不带。

回答2:

题目只说 n≤100000和k≤400。

但是并没有限定输入整数的规模
这样
c=a[i][j]/100;
d=a[i][j]%100;
b[c][d]++;
这几行代码中 c就有可能是超过100的 比如输入的是100000
这样c=1000
明显 b[c][d]就越界了。

其实没那么复杂。
只需要对每个输入的 进行插入排序,同时只保留前k个就好。
开一个400的数组。
最后a[k-1]就是结果。

回答3:

开一个int a[100000]的并初始化为0,依次输入i-N,把对应的a[i]改为1
然后从a[0]开始数为1的数,第K个就是第几个数为1的数,把i输出来
复杂度依次输入为N,一次循环N
N+N=N的复杂度