tw1269.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. { Source provided for Free Pascal Bug Report 1269 }
  2. { Submitted by "Rob Kolstad" on 2000-11-28 }
  3. { e-mail: [email protected] }
  4. {$ifdef cpu68k}
  5. {$define COMP_IS_INT64}
  6. {$endif cpu68k}
  7. var
  8. A : array [0..25, 0..100] of comp;
  9. V : array [1..25] of longint;
  10. vt, nn : longint;
  11. i, j : longint;
  12. function calc(m : longint; n : longint) : comp;
  13. var i : longint;
  14. begin
  15. writeln(m,' ',n, ' ', a[m,n]);
  16. if A[m, n] <> -1 then begin
  17. calc := A[m, n]
  18. end else begin
  19. if n = 0 then begin
  20. A[m, n] := 1;
  21. calc := 1;
  22. exit;
  23. end;
  24. A[m, n] := 0;
  25. for i := m downto 1 do
  26. if n - V[i] >= 0 then
  27. A[m, n] := A[m, n] + calc(i, n - V[i]);
  28. calc := A[m, n];
  29. end;
  30. end;
  31. begin
  32. vt := 10;
  33. nn := 100;
  34. v[1] := 1; v[2] := 2; v[3] := 3;
  35. v[4] := 4; v[5] := 5; v[6] := 6;
  36. v[7] := 7; v[8] := 8; v[9] := 9;
  37. v[10] := 10;
  38. for i := 0 to 25 do
  39. for j := 0 to nn do A[i, j] := -1;
  40. {$ifdef COMP_IS_INT64}
  41. writeln( calc(vt, nn));
  42. {$else not COMP_IS_INT64}
  43. writeln( calc(vt, nn) :0:0);
  44. {$endif COMP_IS_INT64}
  45. end.