fork download
  1. program ideone;
  2. type
  3. au32 = array of uint32;
  4. function rev(n: uint32): uint32;
  5. function aux(acc, m: uint32): uint32;
  6. begin
  7. if m = 0 then aux := acc else aux := aux(acc * 10 + m mod 10, m div 10)
  8. end;
  9. begin
  10. rev := aux(0, n)
  11. end;
  12. function f(n: uint32): au32;
  13. function aux(a, b: uint32): au32;
  14. begin
  15. case shortint(a = rev(a)) * 10 + shortint(b = rev(b)) of
  16. 11 : aux := au32.create(a, b);
  17. 10 : aux := au32.create(a);
  18. 01 : aux := au32.create(b);
  19. 00 : aux := aux(a - 1, b + 1);
  20. end;
  21. end;
  22. begin
  23. if n = rev(n) then f := au32.create(n) else f := aux(n - 1, n + 1)
  24. end;
  25. procedure g(n: uint32);
  26. var
  27. m: uint32;
  28. begin
  29. writeln('入力: ', n);
  30. for m in f(n) do writeln('出力: ', m);
  31. writeln
  32. end;
  33. begin
  34. g(0);g(17);g(100)
  35. end.
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
入力: 0
出力: 0

入力: 17
出力: 22

入力: 100
出力: 99
出力: 101