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

入力: 17
出力: [22]

入力: 100
出力: [99, 101]