class ReverseFactorial {
public static void main
(String[] args
) { int[] input = {
3628800,
479001600,
6,
18
};
for(int cur: input)
System.
out.
printf("%d: %s\n", cur, reverseFactorial
(cur
)); }
public static String reverseFactorial
(int x
) { for(int i = 0; factorial(i) <= x; i++)
if(factorial(i) == x)
return "NONE";
}
public static int factorial(int x) {
return x > 0 ? x * factorial(x - 1) : 1;
}
}
Y2xhc3MgUmV2ZXJzZUZhY3RvcmlhbCB7CgkgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCSAgICBpbnRbXSBpbnB1dCA9IHsKCQkJICAgIDM2Mjg4MDAsCgkJCSAgICA0NzkwMDE2MDAsCgkJCSAgICA2LAoJCQkgICAgMTgKCQkgICAgfTsKCQkKCQkgICAgZm9yKGludCBjdXI6IGlucHV0KQoJCQkgICAgU3lzdGVtLm91dC5wcmludGYoIiVkOiAlc1xuIiwgY3VyLCByZXZlcnNlRmFjdG9yaWFsKGN1cikpOwoJICAgIH0KCQoJICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJldmVyc2VGYWN0b3JpYWwoaW50IHgpIHsKCQkgICAgZm9yKGludCBpID0gMDsgZmFjdG9yaWFsKGkpIDw9IHg7IGkrKykKCQkJICAgIGlmKGZhY3RvcmlhbChpKSA9PSB4KQoJCQkJICAgIHJldHVybiBJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIiEiOwoJCSAgICByZXR1cm4gIk5PTkUiOwoJICAgIH0KCQoJICAgIHB1YmxpYyBzdGF0aWMgaW50IGZhY3RvcmlhbChpbnQgeCkgewoJCSAgICByZXR1cm4geCA+IDAgPyB4ICogZmFjdG9yaWFsKHggLSAxKSA6IDE7CgkgICAgfQp9