/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static interface Factorial{
public int calculate(int n);
}
public static enum FactorialFactory{
INSTANCE;
public static FactorialFactory getFactoryInstance(){
return INSTANCE;
}
public Factorial createNewInstance(){
return new Factorial(){
@Override
public int calculate(int n){
if(n < 0){
}
int res = 1;
while(n>0){
res = res*(n--);
}
return res;
}
};
}
}
public static void main
(String[] args
) {
Factorial fac = FactorialFactory.getFactoryInstance().createNewInstance();
for(int k=1;;k++){
int factorial = fac.calculate(k);
System.
out.
printf("%02d! = %s%n", k,
String.
format("%32s",
Integer.
toBinaryString(factorial
)).
replace(' ',
'0') );
if(factorial == 0){
break;
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgRmFjdG9yaWFsewoJCXB1YmxpYyBpbnQgY2FsY3VsYXRlKGludCBuKTsKCX0KCQoJcHVibGljIHN0YXRpYyBlbnVtIEZhY3RvcmlhbEZhY3Rvcnl7CgkJSU5TVEFOQ0U7CgkJCgkJcHVibGljIHN0YXRpYyBGYWN0b3JpYWxGYWN0b3J5IGdldEZhY3RvcnlJbnN0YW5jZSgpewoJCQlyZXR1cm4gSU5TVEFOQ0U7CgkJfQoJCQoJCXB1YmxpYyBGYWN0b3JpYWwgY3JlYXRlTmV3SW5zdGFuY2UoKXsKCQkJcmV0dXJuIG5ldyBGYWN0b3JpYWwoKXsKCQkJCUBPdmVycmlkZQoJCQkJcHVibGljIGludCBjYWxjdWxhdGUoaW50IG4pewoJCQkJCWlmKG4gPCAwKXsKCQkJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOwoJCQkJCX0KCQkJCQlpbnQgcmVzID0gMTsKCQkJCQl3aGlsZShuPjApewoJCQkJCQlyZXMgPSByZXMqKG4tLSk7CgkJCQkJfQoJCQkJCXJldHVybiByZXM7CgkJCQl9CgkJCX07CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykKCXsKCQlGYWN0b3JpYWwgZmFjID0gRmFjdG9yaWFsRmFjdG9yeS5nZXRGYWN0b3J5SW5zdGFuY2UoKS5jcmVhdGVOZXdJbnN0YW5jZSgpOwoJCWZvcihpbnQgaz0xOztrKyspewoJCQlpbnQgZmFjdG9yaWFsID0gZmFjLmNhbGN1bGF0ZShrKTsKCQkJU3lzdGVtLm91dC5wcmludGYoIiUwMmQhID0gJXMlbiIsIGssIAoJCQkJU3RyaW5nLmZvcm1hdCgiJTMycyIsIEludGVnZXIudG9CaW5hcnlTdHJpbmcoZmFjdG9yaWFsKSkucmVwbGFjZSgnICcsICcwJykKCQkJKTsKCQkJaWYoZmFjdG9yaWFsID09IDApewoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9Cn0=