讨论 / 没有输出是什么情况?
victorlee129 2012-09-09 02:45:00
点我顶贴 收藏 删除
评测机说我没有输出……

我不理解了。

const

m_=10000;

s_='000000000000';

_n=4;

type

bigNum=record

len:integer;

data:array[1..50]of dword;

end;

var

f:array[1..15000,0..512]of bigNum;

i,j,k:integer;

maxNum,lenK:integer;

k_,len:integer;

ans:bigNum;

procedure plus(var a,b:bigNum);

var

i:integer;

begin

if a.len<b.len then a.len:=b.len;

for i:=1 to a.len do a.data[i]:=a.data[i]+b.data[i];

for i:=1 to a.len do

begin

inc(a.data[i+1],a.data[i] div m_);

a.data[i]:=a.data[i] mod m_;

end;

if a.data[a.len+1]>0 then inc(a.len);

end;

procedure s_t_number(var a:bigNum;x:integer);

begin

a.len:=1;

a.data[1]:=x;

end;

function repr(x:integer):string;

var

res:string;

begin

str(x,res);

exit(copy(s_,1,_n-length(res))+res);

end;

procedure print(a:bigNum);

var

i:integer;

begin

write(a.data[a.len]);

for i:=a.len-1 downto 1 do write(repr(a.data[i]));

writeln;

end;

begin

readln(k_,len);

writeln('****');

maxNum:=1 shl k_-1;

lenK:=len div k_;

fillchar(f,sizeof(f),0);

for i:=0 to maxNum do

begin

f[1,i].len:=1;

f[1,i].data[1]:=1;

end;

fillchar(ans,sizeof(ans),0);

s_t_number(ans,0);

for i:=2 to lenK+1 do

begin

for j:=maxNum-1 downto 0 do

begin

f[i,j]:=f[i,j+1];

plus(f[i,j],f[i-1,j+1]);

end;

if i>2 then plus(ans,f[i,0]);

end;

if len mod k_<>0 then

for i:=1 to 1 shl (len mod k_)-1 do plus(ans,f[lenK+1,i]);

print(ans);

end.

#1 刘载清@2012-09-09 00:51:00
回复 删除
回复 楼主victorlee129 的帖子

再交一次试试

#2 victorlee129@2012-09-09 02:45:00
回复 删除
回复 沙发刘载清 的帖子

5次了- -

查看更多回复
提交回复