Pages

Wednesday 10 October 2012

UVA - 694 - The Collatz Sequence


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Main{

    public static void main(String[] args) throws IOException {
         InputStreamReader isr=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(isr);
        StringBuffer sb = new StringBuffer("");
        int cases=1;
         while(true){
            StringTokenizer st=new StringTokenizer(br.readLine());
            int pair1=Integer.parseInt(st.nextToken());
            int pair2=Integer.parseInt(st.nextToken());
            if(pair1<0 && pair2<0)
                break;
           
            sb.append("Case ").append(cases).append(": A = ").append(pair1).append(", limit = ")
                    .append(pair2).append(", number of terms = ").append(getcycles(pair1, pair2)).append("\n");
            cases++;
        }
         System.out.print(sb);
    }
    static long getcycles(long x,long l){
        if(x==1)
            return 1;
        if(x>l)
            return 0;
        if(x%2!=0) return 1+getcycles(3*x+1,l);
        return 1+getcycles(x/2,l);
    }
}

No comments:

Post a Comment