讨论 / 大牛们再帮帮我吧,诡异的数据
Wych 2009-05-13 07:36:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeost[5]

得分: 70分

提交日期: 2008-9-9 21:48:00

有效耗时: 485毫秒

测试结果1: 通过本测试点|有效耗时203:ms

测试结果2: 通过本测试点|有效耗时47:ms

测试结果3: 通过本测试点|有效耗时47:ms

测试结果4: 测试结果错误.错误结果为:1396

正确结果应为:1430

测试结果5: 通过本测试点|有效耗时47:ms

测试结果6: 通过本测试点|有效耗时47:ms

测试结果7: 测试结果错误.错误结果为:2645438

正确结果应为:2674440

测试结果8: 通过本测试点|有效耗时47:ms

测试结果9: 通过本测试点|有效耗时47:ms

测试结果10: 测试结果错误.错误结果为:1672247982

正确结果应为:1767263190

提交代码: program rq332(input,output);

var n,i:integer;

s:qword;

begin

readln(n);

s:=1;

for i:=n+2 to 2*n do

begin s:=s*i;

s:=s div (i-n);

end;

write(s);

end.

莫非公式不对?

sum:=1/(n+1)*C(2n,n)

#1 wish@2008-09-09 21:53:00
回复 删除
你组合数公式错了

C(n, r) = n!/[r!(n-r)!]

你求的是

(2n)!/[(n!)^2]

#2 青龙白狐@2008-11-06 23:23:00
回复 删除
注意:组合公式没错,ls"大牛"给的两个公式是一样的!!!

关键在于:你用div,当时不一定整除,把它记录,到最后在

div!!!

var n,i,t:longint;

s:qword;

a:array[1..100] of integer;

begin

readln(n);

s:=1;

t:=0;

for i:=n+2 to n*2 do

begin

s:=s*i;

if s mod (i-n)=0 then s:=s div (i-n)

else begin

inc(t);

a[t]:=i-n

end

end;

for i:=1 to 20 do

if a[i]<>0 then s:=s div a[i];

writeln(s)

end.

AC!!

#3 青龙白狐@2008-11-07 01:21:00
回复 删除
ok?
#4 Wych@2009-05-13 07:36:00
回复 删除
嗯,过了

谢谢,发过的问题好久没看到。

查看更多回复
提交回复