diff options
| -rw-r--r-- | challenge-125/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-125/abigail/java/ch-1.java | 52 | ||||
| -rw-r--r-- | challenge-125/abigail/pascal/ch-1.p | 59 |
3 files changed, 113 insertions, 0 deletions
diff --git a/challenge-125/abigail/README.md b/challenge-125/abigail/README.md index 85399168ce..edbb6b6ea7 100644 --- a/challenge-125/abigail/README.md +++ b/challenge-125/abigail/README.md @@ -32,8 +32,10 @@ Output: -1 * [AWK](awk/ch-1.awk) * [C](c/ch-1.c) * [Go](go/ch-1.go) +* [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) * [Python](python/ch-1.py) * [Ruby](ruby/ch-1.rb) diff --git a/challenge-125/abigail/java/ch-1.java b/challenge-125/abigail/java/ch-1.java new file mode 100644 index 0000000000..722b6d0f81 --- /dev/null +++ b/challenge-125/abigail/java/ch-1.java @@ -0,0 +1,52 @@ +// +// See ../README.md +// + +// +// Run as: ln ch-1.java ch1.java; javac ch1.java; java ch1 < input-file +// + +import java.util.*; + +public class ch1 { + public static long introot (long square) { + return ((long) Math . floor (Math . sqrt (square))); + } + + public static void main (String [] args) { + Scanner scanner = new Scanner (System . in); + while (scanner . hasNextInt ()) { + long n = scanner . nextInt (); + if (n <= 2) { + System . out . println ("-1"); + continue; + } + + long n_sq = n * n; + long c = n + 1; + long c_sq = n_sq + 2 * n + 1; + + while (2 * c - 1 <= n_sq) { + long b_sq = c_sq - n_sq; + long b = introot (b_sq); + + if (b_sq == b * b) { + System . out . printf ("%d %d %d\n", n, b, c); + } + + c_sq += 2 * c + 1; + c += 1; + } + + long max_a = (long) Math . floor (n / Math . sqrt (2)); + long a = 3; + for (a = 3; a <= max_a; a ++) { + long b_sq = n_sq - a * a; + long b = introot (b_sq); + if (b_sq == b * b) { + System . out . printf ("%d %d %d\n", a, b, n); + } + } + } + } +} diff --git a/challenge-125/abigail/pascal/ch-1.p b/challenge-125/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..f6e2d93fb5 --- /dev/null +++ b/challenge-125/abigail/pascal/ch-1.p @@ -0,0 +1,59 @@ +Program XXX; + +(* *) +(* See ../README.md *) +(* *) + +(* *) +(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *) +(* *) + +uses + math; + +var + n, n_sq, a, max_a, b, b_sq, c, c_sq: int64; + +function introot (square: int64): int64; +begin + introot := round (sqrt (square)); +end; + + +begin + while (not eof) do begin + readln (n); + if n <= 2 then begin + writeln (-1); + continue; + end; + + n_sq := n * n; + c := n + 1; + c_sq := n_sq + 2 * n + 1; + + while (2 * c - 1 <= n_sq) do begin + b_sq := c_sq - n_sq; + b := introot (b_sq); + if b_sq = b * b then begin + writeln (n, ' ', b, ' ', c); + end; + c_sq := c_sq + 2 * c + 1; + c := c + 1; + end; + + max_a := floor (n / sqrt (2)); + for a := 3 to max_a do begin + b_sq := n_sq - a * a; + if b_sq < 0 then begin + writeln ('n = ', n, '; a = ', a, '; b_sq = ', b_sq); + continue; + end; + + b := introot (b_sq); + if b_sq = b * b then begin + writeln (a, ' ', b, ' ', n); + end; + end; + end; +end. |
