❶ 从k个不厥醒∪个且任意两个数差的绝对值不小于2,有多少种选法
从1,2,3,…,97,98,99,100中取出1,有1+100>100,取法数1个;
取出2,有2+100>100,2+99>100,取法数2个;
取出3,取法数3个,
…
取出k,取法数k个,
…
取出50,有50+51>100,50+52>100,…,50+100>100,取法有50个.
所以取出数字1至50,共得取法数N1=1+2+3+…+50=1275.
取出51,有51+52>100,51+53>100,…,51+100>100,共49个;
取出52,则有48个,
…
取出k,取法数100-k个,
…
取出99,只有1个,
取出100,没有符合的情况.
所以取出数字51至100(N1中取过的不在取),则N2=49+48+…+2+1=1225.
故总的取法有N=N1+N2=2500个.
❷ 在51个连续的奇数1,3,5……101中选取k个数,使之和为1949,那么k的最大值为多少
不确定你有没有学过等差数列的求和公式?
该题中取K个数,使之和为一个固定的数字,那么当然前面的越小越好,也就是说,可以的话1,3,5,7...这些最小的数字都要用到,也就是说
1+3+5+7+...+(2K-1)=1949
即K+K(K-1)2/2=1949 (等差数列的求和公式)
即K的平方=1949
K约等于44.15
K肯定是个整数,所以K的最大值为不超过44.15的整数,
也就是说K的最大值为44
❸ 1~100这100个整数中,任取k个数,在这k个数中,总有两个数字之和等于另外两个不同的数字之和,则k最小是
∵要任意去取2个数相加都可以,∴必须两个加数都是3或者3的整数倍数才行100÷3=33---余1∴符合条件的数一共有33个33÷3=16----余1∴符合要求的数有16对。
❹ 用JAVA语言编译:数组中包含n个整数,从其中找出k个最小的数,写出你能想到的最快的方法!!!
最快k*O(n)~O(n),将前K个数放入一个k的数组中,按序放,对K+1到N的数,依次如果比K数组总的小,将K中最大的取出,放入最小的数,一直维持K个,最后就是最小的K个。
import java.util.Arrays;
/**先给数值里的值进行从小到大排序,取从0到k-1索引的数组值
* @创建一个数组,包含11个元素,求5个最小的数
* @author Administrator
public class ArrayTest {
public static void main(String[] args) {
//最小元素的个数
int k=5;
//创建一个数组,
int[] arr = {1,3,45,33,67,12,88,11,46,32,89};
//操作数组的工具Arrays,sort()方法自动排序,由小到大
Arrays.sort(arr);
for(int i=0;i<k;i++){
System.out.println(arr[i]);
}
(4)取k个数字创造扩展阅读:
此处数组是程序中声明的变量数组。它们不同于控件数组,控件数组是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。
一个数组中的所有元素具有相同的数据类型(在C、C++、Java、pascal中都这样。但也并非所有涉及数组的地方都这样,比如在Visual Foxpro中的数组就并没这样的要求)。当然,当数据类型为 Variant 时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户自定义类型和对象变量。
❺ 从1到n中任取k个数,要求所取的k个数中,任意两个数不能相差1。有多少种取法。
既任意两个数相差大于等于2
设这k个数从小到大分别是a1,a2……ak
现在另b1=a1,b2=a2-1,b3=a3-2,b4=a4-3……bk=ak-(k-1)
则这k个b某某和这k个a某某是一一对应的
而b1,b2……bk之间相差大于等于1,且这k个数是从1到n-(k-1)中取的
所以取法就是n-k+1个元素中取k个,这个用排列组合公式就可以了
❻ 如何生成位于0至n-1之间的k个不同的随机顺序的随机整数
问题或许可以是这样:产生m个随机正整数,要求范围是从1到n,平且它们互不相同. 问题或许可以这样解决:假设我们已经有了经过排序的(升序),且满足要求的k个正整数,我们继续: 1、在从1到n-k的区间范围内,产生一个随机的正整数i1; 2、统计在已有序列中比i1小的数,将其个数加到i1上,得到i2;再统计从i1到i2数的个数,得到i3;一直循环,直到i不变为止.然后,把i插入已有的序列.这个过程相当于从头数出i1个空白,以此来保证新的数是随机的. 3、这时得到了k+1个满足要求的数,然后就循环吧. 上面的方法适用于n很大,但是m很小的时候. 如果m和n都很大,并且希望一次性的产生,那么: 1先产生有一定冗余的随机正整数,然后排序,然后去掉相同的数. 如果,产生了超额的数,可以将数列再打乱顺序,然后,取出符合规定的数目的数. 当然,也可以两种方法相结合,就是: 1、先产生超过需求的、有一定冗余的随机正整数,然后排序,然后去掉相同的数,并且保存下来.记录它的数目m1>m; 2、当要用时,在产生一个从1到m的随机数j,然后取出数据库中第j个数,输出,并且把它从数据库中删除到.
❼ 在不大于n的正整数中任取k个数,满足其中必存在两部分数字和相等(如6+7+9= 10+12),求n的最大值。
反例: n=13时,6+8+10=11+13,满足; n=12时,6+7+8≠10+12,不满足。 你的题到底何意?
❽ 从n个数中取k个数 可以重复 有多少种不同的取法
如果123,与321算一个,111,算一个
C(n,k)+C(n,1)C(n-1,k-2)+C(n,1)C(n-1,k-3)+...+C(n,1)C(n-1,1)+C(n,1)
意思是没有重复+2个重复+3个重复+...+k个重复
如1,2,3,4取3个数
没有重复
C(4,3)=4
123
124
134
234
有两个重复
C(4,1)C(3,1)=12
112
113
114
221
223
224
331
332
334
441
442
443
有三个重复
C(4,1)=4
111
222
333
444
一共20个
这与c(3,4+3-1)=20相同
c(k,n+k-1)可用球盒模型解释
把k个相同的球放入n个不同的盒子中,n个盒子标1,2,,,,n号,几号盒子有几个球代表合子的数字被取了几次。该组合数可用球盒排成一行来得到
o>oo>>o>o..o>
o代表球
>代表盒子
盒子左边有几个球就代表那个盒子装了几个球
最右边的盒子不能动,其它的盒子在剩下的n+k-1
个位置选k个。
❾ 从N个数字中任选K个数字,可得多少组合,好象有个公式,忘了,谁给介绍一下
Cnk=n!/[k!(n-k)!]