讨论 / 请问……不安全代码是什么?
victorlee129 2013-04-30 06:07: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 set_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);

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);

set_number(ans,0);

for i:=2 to lenK+1 do

begin

for j:=0 to maxNum do

for k:=j+1 to maxNum do

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

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-08-26 05:59:00
回复 删除
是"set"^_^

rt

#2 victorlee129@2012-08-27 05:07:00
回复 删除
回复 沙发-.->.< 的帖子

- +那pascal还有个数据类型叫作set呢……情何以堪?

#3 yangfengyi@2013-04-30 06:07:00
回复 删除
对,set of byte/char,集合
查看更多回复
提交回复