import java.math.BigInteger;
class Ideone{
static final int c11=25,c23=30;
static final int b11=(1<<c11)-1,b23=(1<<c23)-1;
.
add(BigInteger.
valueOf((long)a
[1]).
shiftLeft(c23
)) .
add(BigInteger.
valueOf((long)a
[0]).
shiftLeft(c23
+c23
)); }
static int[] add(int[]a,int[]b){
int[]c={0,0,0}; int z=0;
z+=a[2]+b[2]; c[2]=z&b23; z>>=c23;
z+=a[1]+b[1]; c[1]=z&b23; z>>=c23;
z+=a[0]+b[0]; c[0]=z&b11;
return c;
}
static int[] mul(int[]a,int[]b){
int[]c={0,0,0}; long z=0L;
z+=(long)a[2]*(long)b[2];
c[2]=(int)(z&(long)b23); z>>=(long)c23;
z+=(long)a[1]*(long)b[2]+(long)a[2]*(long)b[1];
c[1]=(int)(z&(long)b23); z>>=(long)c23;
z+=(long)a[0]*(long)b[2]+(long)a[1]*(long)b[1]+(long)a[2]*(long)b[0];
c[0]=(int)(z&(long)b11);
return c;
}
public static void main
(String[] args
){ int[] b={0,0, 2};
int[] a={0,0,27};
int[] s={0,0,27};
int[] t;
long ms0
= System.
currentTimeMillis(); for (long i = 1L; i < 1099511627776L/30000L ; i++){
t = mul(a,a); a = mul(t,a); s = add(s,a);
}
long ms
= System.
currentTimeMillis()-ms0
; System.
out.
println(i2b
(s
)+"/"+ms
); System.
out.
println("1099511627776L => "+30000d
*ms
/(1000*60*60*24)); }
}
aW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOwpjbGFzcyBJZGVvbmV7CiAgc3RhdGljIGZpbmFsIGludCBjMTE9MjUsYzIzPTMwOwogIHN0YXRpYyBmaW5hbCBpbnQgYjExPSgxPDxjMTEpLTEsYjIzPSgxPDxjMjMpLTE7CiAgc3RhdGljIEJpZ0ludGVnZXIgaTJiKGludFtdYSl7CiAgICByZXR1cm4gQmlnSW50ZWdlci52YWx1ZU9mKChsb25nKWFbMl0pCiAgICAgIC5hZGQoQmlnSW50ZWdlci52YWx1ZU9mKChsb25nKWFbMV0pLnNoaWZ0TGVmdChjMjMpKQogICAgICAuYWRkKEJpZ0ludGVnZXIudmFsdWVPZigobG9uZylhWzBdKS5zaGlmdExlZnQoYzIzK2MyMykpOwogIH0KICBzdGF0aWMgaW50W10gYWRkKGludFtdYSxpbnRbXWIpewogICAgaW50W11jPXswLDAsMH07IGludCB6PTA7CiAgICB6Kz1hWzJdK2JbMl07IGNbMl09eiZiMjM7IHo+Pj1jMjM7CiAgICB6Kz1hWzFdK2JbMV07IGNbMV09eiZiMjM7IHo+Pj1jMjM7CiAgICB6Kz1hWzBdK2JbMF07IGNbMF09eiZiMTE7CiAgICByZXR1cm4gYzsKICB9CiAgc3RhdGljIGludFtdIG11bChpbnRbXWEsaW50W11iKXsKICAgIGludFtdYz17MCwwLDB9OyBsb25nIHo9MEw7CiAgICB6Kz0obG9uZylhWzJdKihsb25nKWJbMl07CiAgICBjWzJdPShpbnQpKHomKGxvbmcpYjIzKTsgej4+PShsb25nKWMyMzsKICAgIHorPShsb25nKWFbMV0qKGxvbmcpYlsyXSsobG9uZylhWzJdKihsb25nKWJbMV07CiAgICBjWzFdPShpbnQpKHomKGxvbmcpYjIzKTsgej4+PShsb25nKWMyMzsKICAgIHorPShsb25nKWFbMF0qKGxvbmcpYlsyXSsobG9uZylhWzFdKihsb25nKWJbMV0rKGxvbmcpYVsyXSoobG9uZyliWzBdOwogICAgY1swXT0oaW50KSh6Jihsb25nKWIxMSk7CiAgICByZXR1cm4gYzsKICB9CiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgICBpbnRbXSBiPXswLDAsIDJ9OwogICAgaW50W10gYT17MCwwLDI3fTsKICAgIGludFtdIHM9ezAsMCwyN307CiAgICBpbnRbXSB0OwogICAgbG9uZyBtczAgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgIGZvciAobG9uZyBpID0gMUw7IGkgPCAxMDk5NTExNjI3Nzc2TC8zMDAwMEwgOyBpKyspewogICAgICB0ID0gbXVsKGEsYSk7IGEgPSBtdWwodCxhKTsgcyA9IGFkZChzLGEpOwogICAgfQogICAgbG9uZyBtcyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpLW1zMDsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihpMmIocykrIi8iK21zKTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbigiMTA5OTUxMTYyNzc3NkwgPT4gIiszMDAwMGQqbXMvKDEwMDAqNjAqNjAqMjQpKTsKICB9Cn0=