import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Scanner; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author cteam063 */ public class collatz { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long cura = 0, curb = 0, met; long a = scanner.nextLong(); long b = scanner.nextLong(); while (!(a == 0 && b == 0)) { List alist = new ArrayList(); List blist = new ArrayList(); alist.add(a); blist.add(b); while (true) { long lastA = alist.get(alist.size() - 1); long lastB = blist.get(blist.size() - 1); if (lastA < lastB) { if ((lastA % 2) == 1) { cura = nextCollatz(lastA); alist.add(cura); if (blist.contains(cura)) { met = cura; break; } } else { curb = nextCollatz(lastB); blist.add(curb); if (alist.contains(curb)) { met = curb; break; } } } else { if ((lastB % 2) == 1) { curb = nextCollatz(lastB); blist.add(curb); if (alist.contains(curb)) { met = curb; break; } } else { cura = nextCollatz(lastA); alist.add(cura); if (blist.contains(cura)) { met = cura; break; } } } } System.out.println(String.format("%d needs %d steps, %d needs %d steps, they meet at %d", a, alist.indexOf(met), b, blist.indexOf(met), met)); a = scanner.nextLong(); b = scanner.nextLong(); } } public static long nextCollatz(long n) { if (n == 1) { return 1; } if (n % 2 == 0) { return n / 2; } else { return 3 * n + 1; } } }