记录编号 |
570 |
评测结果 |
WTATT |
题目名称 |
[NOI 1999]生日蛋糕 |
最终得分 |
20 |
用户昵称 |
辨机ZN |
是否通过 |
未通过 |
代码语言 |
Pascal |
运行时间 |
6.097 s |
提交时间 |
2008-07-19 20:02:02 |
内存使用 |
0.11 MiB |
显示代码纯文本
program ex(f1,f2);
var
f1,f2:text; i,j,m,n:longint;
max:int64;
procedure search(step,r,h:longint; v,s:longint);
var i,j:longint;
v2,s2:longint;
begin
for i:=1 to r-1 do
for j:=1 to h-1 do
begin
if v-(i*i*j)>=0 then
begin
v2:=v-(i*i*j);
s2:=s+(2*i*j);
if (step=m)and(v2=0) then
begin
if s2<max then max:=s2;
end
else begin
if (step<m)and(v2>0) then
search(step+1,i,j,v2,s2);
end;
end;
end;
end;
procedure ri;
var i,j:longint;
begin
max:=99999999;
for i:=1 to trunc(sqrt(n)) do
for j:=1 to (n div (i*i)) do
search(2,i,j,(n-i*i*j),(i*i+2*i*j));
writeln(f2,max);
end;
begin
assign(f1,'cake.in'); reset(f1);
assign(f2,'cake.out'); rewrite(f2);
readln(f1,n);
readln(f1,m);
ri;
close(f1);
close(f2);
end.