Check-in [7ed443a348]
Not logged in
Overview
SHA1 Hash:7ed443a3485d648fe57f1b2d4dee0d197ebab47c
Date: 2011-07-09 15:15:44
User: kinaba
Comment:xx
Timelines: family | ancestors | descendants | both | trunk
Downloads: Tarball | ZIP archive
Other Links: files | file ages | manifest
Tags And Properties
Changes

Added SRM/TCO8-U/1A.java version [49868c43512ca5f3]

1 +import java.math.*; 2 +import java.util.*; 3 + 4 +public class ZenoDivision { 5 + static BigInteger ZERO = BigInteger.ZERO; 6 + static BigInteger ONE = BigInteger.ONE; 7 + static BigInteger TWO = BigInteger.valueOf(2); 8 + static BigInteger TEN = BigInteger.TEN; 9 + 10 + public String cycle(String a_, String b_) 11 + { 12 + BigInteger a = new BigInteger(a_); 13 + BigInteger b = new BigInteger(b_); 14 + 15 + if( b.remainder(TWO).equals(ZERO) ) 16 + return "impossible"; 17 + if( a.equals(ZERO) && b.equals(ONE) ) 18 + return "-"; 19 + if( a.equals(ONE) && b.equals(ONE) ) 20 + return "*"; 21 + 22 + int x = 1; 23 + while( !TWO.modPow(BigInteger.valueOf(x),b).equals(ONE) ) { 24 + x++; 25 + if( x >= 61 ) 26 + return "impossible"; 27 + } 28 + 29 + BigInteger z = TWO.pow(x).subtract(ONE).divide(b); 30 + String str = a.multiply(z).toString(2); 31 + while( str.length() < x ) 32 + str = "0" + str; 33 + 34 + String answer = ""; 35 + for(int i=0; i<str.length(); ++i) 36 + answer += (str.charAt(i)=='1' ? "*" : "-"); 37 + return answer; 38 + } 39 +};