比赛 20100914 评测结果 AAAWAWAAAA
题目名称 算24点 最终得分 80
用户昵称 苏轼 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-09-14 19:39:06
显示代码纯文本
  1. program point24(input,output);
  2.  
  3. var
  4. n:array[1..4]of integer;
  5. s:array[1..3]of string;
  6. s1,s2:string;
  7. i,tmp:integer;
  8.  
  9. function go(sum,deep:integer):boolean;
  10. var
  11. i,flag,ans:integer;
  12. ch:char;
  13. begin
  14. ch:=#0;
  15.  
  16. if deep<4 then
  17. begin
  18. inc(deep);
  19.  
  20. for i:=1 to 4 do
  21. if n[i]<>0 then
  22. begin
  23. flag:=n[i];
  24. n[i]:=0;
  25.  
  26. if go(sum+flag,deep) then
  27. begin
  28. ans:=sum+flag;
  29. ch:='+';
  30. end
  31. else if (sum>=flag) and go(sum-flag,deep) then
  32. begin
  33. ans:=sum-flag;
  34. ch:='-';
  35. end
  36. else if go(sum*flag,deep) then
  37. begin
  38. ans:=sum*flag;
  39. ch:='*';
  40. end
  41. else if (sum mod flag=0)and go(sum div flag,deep) then
  42. begin
  43. ans:=sum div flag;
  44. ch:='/';
  45. end;
  46.  
  47. n[i]:=flag;
  48.  
  49. if ch<>#0 then
  50. begin
  51. flag:=i;
  52. break;
  53. end;
  54. end;
  55. end
  56. else
  57. exit(sum=24);
  58.  
  59. dec(deep);
  60. if ch<>#0 then
  61. begin
  62. str(sum,s1);
  63. str(n[i],s2);
  64. str(ans,s[deep]);
  65.  
  66. if sum>n[i] then
  67. s[deep]:=s1+ch+s2+'='+s[deep]
  68. else
  69. s[deep]:=s2+ch+s1+'='+s[deep];
  70.  
  71. exit(true);
  72. end
  73. else
  74. exit(false);
  75. end;
  76.  
  77. begin
  78. assign(input,'point24.in');
  79. reset(input);
  80.  
  81. assign(output,'point24.out');
  82. rewrite(output);
  83.  
  84. readln(n[1],n[2],n[3],n[4]);
  85.  
  86. for i:=1 to 4 do
  87. begin
  88. tmp:=n[i];
  89. n[i]:=0;
  90.  
  91. if go(tmp,1) then
  92. break;
  93.  
  94. n[i]:=tmp;
  95. end;
  96.  
  97. if s[1]<>'' then
  98. for i:=1 to 3 do
  99. writeln(s[i])
  100. else
  101. writeln('No answer!');
  102.  
  103. close(input);
  104. close(output);
  105. end.
  106.  
  107.