比赛 NOIP_4 评测结果 AAAAAAAAAA
题目名称 算24点 最终得分 100
用户昵称 francis 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-09-19 21:15:39
显示代码纯文本
program point24;
const
fin='point24.in';
fou='point24.out';
var
a:array[1..4]of longint;
b:array[1..4]of boolean;
c:array[1..3,1..3]of longint;
ch:array[1..3]of char;
total,x,y,p,q,i,j:longint;
f1,f2:text;

procedure init;
begin
assign(f1,fin); assign(f2,fou);
reset(f1); rewrite(f2);
for i:=1 to 4 do
 read(f1,a[i]);
end;

procedure put(total:longint);
var
i,j:longint;
begin
if total=24 then
begin
 for i:=1 to 3 do
 writeln(f2,c[i,1],ch[i],c[i,2],'=',c[i,3]);
 close(f1); close(f2); halt;
end;
end;

procedure print(x,y:longint);
begin
if x>=y then begin c[3,1]:=x; c[3,2]:=y; end
        else begin c[3,1]:=y; c[3,2]:=x; end;

  c[3,3]:=c[3,1]+c[3,2]; ch[3]:='+'; put(c[3,3]);
  c[3,3]:=c[3,1]-c[3,2]; ch[3]:='-'; put(c[3,3]);
  c[3,3]:=c[3,1]*c[3,2]; ch[3]:='*'; put(c[3,3]);
  if (c[3,2]<>0)and((c[3,1]/c[3,3])=trunc(c[3,1]/c[3,2]))then
   begin c[3,3]:=trunc(c[3,1]/c[3,2]); ch[3]:='/'; put(c[3,3]); end;
end;

procedure go;
var
i,j,k,t:longint;
begin
k:=c[1,3];
for i:=1 to 4 do
 if b[i]=false then
 begin
  b[i]:=true;
  if k>=a[i] then begin c[2,1]:=k; c[2,2]:=a[i]; end
             else begin c[2,1]:=a[i]; c[2,2]:=k; end;
  for j:=1 to 4 do
    if b[j]=false then t:=a[j];
  c[2,3]:=c[2,1]+c[2,2]; ch[2]:='+'; print(c[2,3],t);
  c[2,3]:=c[2,1]-c[2,2]; ch[2]:='-'; print(c[2,3],t);
  c[2,3]:=c[2,1]*c[2,2]; ch[2]:='*'; print(c[2,3],t);
  if (c[2,2]<>0)and((c[2,1]/c[2,2])=trunc(c[2,1]/c[2,2]))then
   begin c[2,3]:=trunc(c[2,1]/c[2,2]); ch[2]:='/'; print(c[2,3],t); end;
  b[i]:=false;
 end;
end;

begin
init;
for i:=1   to 4 do
 for j:=i+1 to 4 do
  begin
   b[i]:=true; b[j]:=true;
   if a[i]>=a[j] then begin c[1,1]:=a[i]; c[1,2]:=a[j]; end
                 else begin c[1,1]:=a[j]; c[1,2]:=a[i]; end;
    c[1,3]:=c[1,1]+c[1,2]; ch[1]:='+'; go;
    c[1,3]:=c[1,1]-c[1,2]; ch[1]:='-'; go;
    c[1,3]:=c[1,1]*c[1,2]; ch[1]:='*'; go;
    if (c[1,2]<>0)and((c[1,1]/c[1,1])=trunc(c[1,1]/c[1,1])) then
       begin c[1,3]:=trunc(c[1,1]/c[1,1]); go; ch[1]:='/'; end;
    b[i]:=false; b[j]:=false;
  end;
write(f2,'No answer!');
close(f1); close(f2);
end.