Showing posts with label codejam. Show all posts
Showing posts with label codejam. Show all posts

Sunday, 14 April 2013

Google Code Jam Problem C. Fair and Square


Below is my solution for Problem C. Fair and Square

Well I qualified for Google Code Jam 2013 with only 60 points.

* Still to add method to handle Large Input 2.





Input is taken from a file(C-small-practice.in)



Method 1:


/*
* @author niraj.nijju
*/


package gcj.TwelveThirteen;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class SmallOfFairAndSquare {

public static void main(String [] args){
try{
// System.out.println(Double.MAX_VALUE);
// System.exit(0);

  FileInputStream fstream = new FileInputStream("C-small-practice.in");
  DataInputStream in = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(in));
  String strLine;
  strLine = br.readLine();
  int T = Integer.valueOf(strLine);
  System.out.println("T: "+T);
  int i=1;
  while ((strLine = br.readLine()) != null)   {
//   System.out.println (strLine);
  String [] str = strLine.split(" ");
  double x = Double.valueOf(str[0].trim() );
  double y = Double.valueOf(str[1].trim() );
  int count= getFairSqur(x,y);
  System.out.println ("Case #"+i++ +": "+count);
  }
  in.close();
}catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
  e.printStackTrace();
}
}


public static int getFairSqur(double x, double y){
int count=0;
long x1 = (long)Math.ceil(Math.sqrt(x));
long y1 = (long)Math.sqrt(y);

for(long i=x1; i<=y1; i++ ){
if(checkPalindrom(i)){
long sq=i*i;
if(checkPalindrom(sq)){
// System.out.println("("+i+")");
count++;
}
}
}


return count;
}



    public static Boolean checkPalindrom(long n)
    {
     String normal = String.valueOf(n);
    //reverse the letters in string
    int length = normal.length(); //length of string
    StringBuffer result = new StringBuffer(length);
    int i;
    for(i = length - 1; i>=0; i--)
    {
    result.append(normal.charAt(i));
    }
    long r = Long.valueOf(result.toString());

    if(r==n)
     return true;
    return false;
    }


}




Method 2:





/*

* @author niraj.nijju

*/



package gcj.TwelveThirteen;



import java.io.BufferedReader;

import java.io.DataInputStream;
import java.io.FileInputStream;

import java.io.InputStreamReader;


import org.omg.CORBA.INTERNAL;

public class CopyOfFairAndSquare {

public static long [] array = new long[10000010];
public static void main(String [] args){
fillArray();
try{
// System.out.println(Double.MAX_VALUE);
// System.exit(0);
  FileInputStream fstream = new FileInputStream("C-small-practice.in");
  DataInputStream in = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(in));
  String strLine;
  strLine = br.readLine();
  int T = Integer.valueOf(strLine);
//   System.out.println("T: "+T);
  int i=1;
  while ((strLine = br.readLine()) != null)   {
//   System.out.println (strLine);
  String [] str = strLine.split(" ");
  double x = Double.valueOf(str[0].trim() );
  double y = Double.valueOf(str[1].trim() );
  //int count= getFairSqur(x,y);
  long count=0;
  int xr = (int)Math.sqrt(x);
  int yr = (int)Math.sqrt(y);
  count = array[yr]-array[xr];
  if(xr*xr == (int)x){
  if(checkPalindrom(xr) &&  checkPalindrom(xr*xr)){
  count++;
  }
  }
  
  
  System.out.println ("Case #"+i++ +": "+count);
  }
  in.close();
}catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
  e.printStackTrace();
}
}

public static void fillArray(){
long count = 0;
for(int i=1;i<array.length;i++){
long j = (long)i;
if(!checkPalindrom(j))
array[i]= count;
else if(!checkPalindrom(j*j))
array[i]= count;
else{
count++;
array[i]= count;
}
}
}

    public static Boolean checkPalindrom(long n)
    {
     String normal = String.valueOf(n);
    //reverse the letters in string
    int length = normal.length(); //length of string
    StringBuffer result = new StringBuffer(length);
    int i;
    for(i = length - 1; i>=0; i--)
    {
    result.append(normal.charAt(i));
    }
    long r=0;
    try{
     r= Long.valueOf(result.toString());
    }catch(Exception e){
     e.printStackTrace();
     System.out.println("i:"+i+"\tr:"+r+"\tn:"+n);
    }

    if(r==n)
     return true;
    return false;
    }


    
    
}



Google Code Jam Problem B. Lawnmower


Below is my solution for Problem B: Lawnmower

Well I qualified for Google Code Jam 2013 with only 60 points.






Google Code Jam Problem A. Tic-Tac-Toe-Tomek


Below is my solution for Problem A: Tic-Tac-Toe-Tomek

Well I qualified for Google Code Jam 2013 with only 60 points.