import java.util.*;
class Ideone {
public static void main
(String[] args
) { long number = 9223372036854775807L;
LinkedList<Long> solution = new LinkedList<Long>();
if (fourSquares(number, solution))
System.
out.
println(number
+ " = sum of squares of: " + solution
); else
System.
out.
println(number
+ " could not be solved"); // never happens }
public static boolean fourSquares(long number, LinkedList<Long> solution) {
if (number == 0) {
for (long i = solution.size(); i < 4; i++)
solution.add(0L);
return true;
}
if (solution.size() == 4)
return false;
for (long i
= (long) Math.
sqrt(number
); i
> 0; i
--) { solution.add(i);
if (fourSquares(number - i * i, solution))
return true;
solution.removeLast();
}
return false;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgSWRlb25lIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIGxvbmcgbnVtYmVyID0gOTIyMzM3MjAzNjg1NDc3NTgwN0w7CiAgICBMaW5rZWRMaXN0PExvbmc+IHNvbHV0aW9uID0gbmV3IExpbmtlZExpc3Q8TG9uZz4oKTsKICAgIGlmIChmb3VyU3F1YXJlcyhudW1iZXIsIHNvbHV0aW9uKSkKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obnVtYmVyICsgIiA9IHN1bSBvZiBzcXVhcmVzIG9mOiAiICsgc29sdXRpb24pOwogICAgZWxzZQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihudW1iZXIgKyAiIGNvdWxkIG5vdCBiZSBzb2x2ZWQiKTsgLy8gbmV2ZXIgaGFwcGVucwp9CgpwdWJsaWMgc3RhdGljIGJvb2xlYW4gZm91clNxdWFyZXMobG9uZyBudW1iZXIsIExpbmtlZExpc3Q8TG9uZz4gc29sdXRpb24pIHsKICAgIGlmIChudW1iZXIgPT0gMCkgewogICAgICAgIGZvciAobG9uZyBpID0gc29sdXRpb24uc2l6ZSgpOyBpIDwgNDsgaSsrKQogICAgICAgICAgICBzb2x1dGlvbi5hZGQoMEwpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGlmIChzb2x1dGlvbi5zaXplKCkgPT0gNCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgZm9yIChsb25nIGkgPSAobG9uZykgTWF0aC5zcXJ0KG51bWJlcik7IGkgPiAwOyBpLS0pIHsKICAgICAgICBzb2x1dGlvbi5hZGQoaSk7CiAgICAgICAgaWYgKGZvdXJTcXVhcmVzKG51bWJlciAtIGkgKiBpLCBzb2x1dGlvbikpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIHNvbHV0aW9uLnJlbW92ZUxhc3QoKTsKICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KfQ==