讨论 / 测试
xiaohao12 2010-09-27 03:26:00
点我顶贴 收藏 删除
用ac程序输入95,根本组合不出33~62;

!!!!!!!!!为什么 ????????

管理员,为什么会这样,测试数据为什么会这样?

#1 zhuzhengjie@2010-09-26 20:49:00
回复 删除
123

program rqnoj8;

type

arr=array[0..200] of longint;

var

k,w,maxn,i,tmp:longint;

ans,b:arr;

procedure plus(a,b:arr;var c:arr); //高精度加法

var i:longint;

begin

fillchar(c,sizeof(c),0);

if a[0]>b[0] then

c[0]:=a[0]

else

c[0]:=b[0];

for i:=1 to c[0] do

begin

inc(c[i],a[i]+b[i]);

inc(c[i+1],c[i] div 1000);

c[i]:=c[i] mod 1000;

end;

if c[c[0]+1]<>0 then

inc(c[0]);

end;

procedure mul(a:arr;b:longint;var c:arr); //单精度乘法

var i:longint;

begin

fillchar(c,sizeof(c),0);

if b=0 then begin c[0]:=1;c[1]:=0;exit;end;

c[0]:=a[0];

for i:=1 to c[0] do

begin

inc(c[i],a[i]*b);

inc(c[i+1],c[i] div 1000);

c[i]:=c[i] mod 1000;

end;

while c[c[0]+1]<>0 do

begin

inc(c[0]);

inc(c[c[0]+1],c[c[0]] div 1000);

c[c[0]]:=c[c[0]] mod 1000;

end;

end;

procedure divi(a:arr;b:longint;var c:arr); //单精度除法

var i,tmp:longint;

begin

fillchar(c,sizeof(c),0);c[0]:=a[0];tmp:=0;

for i:= c[0] downto 1 do

begin

tmp:=tmp*1000+a[i];

c[i]:=tmp div b;

tmp:=tmp mod b;

end;

while (c[0]>0)and(c[c[0]]=0) do dec(c[0]);

end;

procedure C(n,m:longint); //组合数

var i:longint;

begin

fillchar(b,sizeof(b),0);

b[0]:=1;b[1]:=1;

for i:=n downto n-m+1 do

mul(b,i,b);

for i:=2 to m do

divi(b,i,b);

end;

procedure print; //高精度的输出

var i:longint;

begin

write(ans[ans[0]]);

for i:=ans[0]-1 downto 1 do

if ans[i]<10 then

write('00',ans[i]) //ps:这里不能写成write(00,ans[i]),不然只输出一个0

else

if ans[i]<100 then

write('0',ans[i])

else

write(ans[i]);

writeln;

end;

begin

readln(k,w);

maxn:=1;

for i:=1 to k do

maxn:=2*maxn;

ans[0]:=0;

for i:=2 to w div k do //枚举2..(w div k)位的2^k进制数的个数

begin

C(maxn-1,i); //每进行一次过程C,就把组合数赋给b数组

plus(ans,b,ans);

end;

tmp:=1;

for i:=1 to w mod k do

tmp:=tmp*2;

dec(tmp);

for i:=1 to tmp do //step1:统计w div k+1位的2^k进制数的个数

begin

C(maxn-1-i,w div k+1-1);

plus(ans,b,ans);

end;

print;

end.

#2 xiaohao12@2010-09-27 03:25:00
回复 删除
kkk

#3 xiaohao12@2010-09-27 03:26:00
回复 删除
楼主来了

卡卡卡

超慢

哪位大牛再看看

查看更多回复
提交回复