★★★100分:彩票35选7有多少种组合?(1到35中选7个,不能有重复!)

UC80862056 2005-01-04 10:22:44
求组合的公式:C(m,n)=n!/(m!*(n-m)!)
我发现20(也可能是19,具体我忘了)以内的可以算出正确的值,但是大了就不行了(可能是因为超出长整数的范围了)。怎么办?
请给出能算任意大数的组合数的算法。不会也请帮忙顶一下。
(求阶乘我用的是第归的方法)
...全文
2216 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jellypillar 2005-01-10
  • 打赏
  • 举报
回复
因C(m,n)=n!/(m!*(n-m)!)

所以

C(35,7)=35!/(7!*28!)=35!/28!/7!

其中35!/28!=35*34*33*……*29。

所以答案就是35 * 34 * 33 * 32 * 31 * 30 * 29 / 7 / 6 / 5 / 4 / 3 / 2 / 1


?有那么难理解吗?

UC80862056 2005-01-10
  • 打赏
  • 举报
回复
up
hthunter 2005-01-08
  • 打赏
  • 举报
回复
呵呵,彩民……
Kshape 2005-01-08
  • 打赏
  • 举报
回复
35 * 34 * 33 * 32 * 31 * 30 * 29

为什么要除/ 7 / 6 / 5 / 4 / 3 / 2 / 1呢?
Kshape 2005-01-08
  • 打赏
  • 举报
回复
35!=6399018521010896896,不知道结果对不对?!
==============================================
好象不对
fsybaby 2005-01-08
  • 打赏
  • 举报
回复
结果 = 35 * 34 * 33 * 32 * 31 * 30 * 29 / 7 / 6 / 5 / 4 / 3 / 2 / 1
这个公式就是C(m,n)=n!/(m!*(n-m)!)的变形,这个你不用担心
UC80862056 2005-01-08
  • 打赏
  • 举报
回复
我问的是:采用公式:结果 = 35 * 34 * 33 * 32 * 31 * 30 * 29 / 7 / 6 / 5 / 4 / 3 / 2 / 1
用的是什么公式?
hellolongbin 2005-01-07
  • 打赏
  • 举报
回复
C(m,n)=m*(m-1)*(m-2)*..*(m-n+1)/n!
UC80862056 2005-01-07
  • 打赏
  • 举报
回复
也就是说:C(m,n)=n!/(m!*(n-m)!)还能用什么公式表示?
UC80862056 2005-01-07
  • 打赏
  • 举报
回复
上面的公式是怎么推导出来的。好像学过,但是忘了。
liangkove 2005-01-06
  • 打赏
  • 举报
回复
朋友,用组合排列算一下啦。
结果是:35*34*33*32*31*30*29/(7!)
kuki84 2005-01-05
  • 打赏
  • 举报
回复
以前用pascal写的代码找不着了。
算法是:结果用数组来表示,每一位用数组的一个元素来表示,例如预计结果是
1000位,那个数组也设置个1000个元素左右的。然后乘数被乘数也用数组,用小学
竖式的思路,一位一位算。
老本 2005-01-05
  • 打赏
  • 举报
回复
var
iCong, iXuan: Integer;
iResult: integer;//int64;
i: integer;
begin
iResult := 1;
iCong := StrToInt(Edit1.Text); //从
iXuan := StrToInt(Edit2.Text); //选
for i := 1 to iXuan do
begin
iResult := iResult*(iCong-i+1) div i;
end;
Edit3.Text := IntToStr(iResult);
end;


计算结果:6724520。
采用Integer也不会溢出。
采用公式:结果 = 35 * 34 * 33 * 32 * 31 * 30 * 29 / 7 / 6 / 5 / 4 / 3 / 2 / 1
hellolongbin 2005-01-05
  • 打赏
  • 举报
回复
35!=1.0333147966386144929666651337523e+40
28!=304888344611713860501504000000
7!=5040
C(35,7)=35!/(7!*28!)=6724520
晕,原来跟我算的差这么多
这是全部的,没有去掉我上面说的条件的
hellolongbin 2005-01-05
  • 打赏
  • 举报
回复
我当时路上没事,心算了一下,好像才几百万的说
C(35,7) 然后减去7位连号、6位连号、5位连号甚至4位连号的组合(注意7位连号中包含6位连号,同样6位连号中也包含5位、4位连号)
我当时心算的是280多万吧,后来一直没验证
ironwill2004 2005-01-05
  • 打赏
  • 举报
回复
其实也就是35乘到35-7+6,再除以(7...1)
i为real类型
ironwill2004 2005-01-05
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var z,j:integer;
begin
i:=1;
for j:=1 to 7 do
begin
z:=36-j;
i:=i*z/j
end;
showmessage(floattostr(i));
end;
应该是这个数字,6724520
僵哥 2005-01-05
  • 打赏
  • 举报
回复
从m个数当中先n个数做不重复排列的计算是否就是
m和n都为大于1的自然数
m>=n

C(m,n)=[m-(n-1)]+..+1
C(35,7)=29+28+27+26+25+24+23+22+21+20+19+18+17+16+15+14+13+12+11+10+9+8+7+6+5+4+3+2+1=435
ygflydream 2005-01-05
  • 打赏
  • 举报
回复
up!
postren 2005-01-04
  • 打赏
  • 举报
回复
N的阶乘参考
http://community.csdn.net/Expert/topic/3466/3466784.xml?temp=.6937525
加载更多回复(2)

16,746

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧