Pages

Saturday, 3 November 2012

UVA - 11666 - Logarithms

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

public class Main {

    public static void main(String[] args) throws IOException {

        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        String m = "";
        StringBuffer sb = new StringBuffer("");
        while (true) {
            int n = Integer.parseInt(br.readLine());
            if (n == 0) {
                break;
            }
            boolean neg = false;
            double lol = Math.log(n);
            int c = (int) Math.floor(lol);
            lol = 1.0 - n / Math.pow(Math.E, 1.0 * c);
            if (Math.abs(lol) > 1) {
                c++;
                lol = 1.0 - n / Math.pow(Math.E, 1.0 * c);
            }
            if (lol < 0) {
                neg = true;
            }
            String g = (int) (Math.round(Math.abs(lol) * 1000 * 1000 * 100)) + "";
            sb.append(c).append(" ");
            if (neg) {
                sb.append("-");
            }
            sb.append("0.");
            for (int i = g.length(); i < 8; i++) {
                sb.append('0');
            }
            sb.append(g).append("\n");
        }
        System.out.print(sb);
    }
}

Friday, 2 November 2012

UVA - 11636 - Hello World! (C Solution)

#include <stdio.h>

int main()
{
    int x,j,i,q,res;
    int arr[16];
    arr[0]=0;
        for(i=1,q=1;i<16;i++,q*=2){
            arr[i]=q;
        }
    i=1;
    while(1){
        scanf("%d",&x);
        if(x<0){
            break;
        }
        for(j=0;j<16;j++){
              if(arr[j]>=x){
                  res=j-1;
                  break;
              }
          }
         printf("Case %d: %d\n",i,res);
         i++;
    }
    return 0;
}

UVA - 11636 - Hello World! (Java Solution)

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        int arr[]=new int[16];
        for(int i=1,q=1;i<16;i++,q*=2){
            arr[i]=q;
        }
        int i=1;
        while(true) {
          int x=Integer.parseInt(br.readLine());
          if(x<0)
              break;
          int res=0;
          for(int j=0;j<arr.length;j++){
              if(arr[j]>=x){
                  res=j-1;
                  break;
              }
          }
          sb.append("Case ").append(i).append(": ").append(res).append("\n");
          i++;
        }
        System.out.print(sb);
    }
   
}

UVA - 850 - Crypt Kicker II

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m = "",ref="";
        String match = "the quick brown fox jumps over the lazy dog";
        LinkedList<String> list = new LinkedList<String>();
        int cases = Integer.parseInt(br.readLine());
        br.readLine();
        for (int j = 0; j < cases; j++) {
            list.clear();
            boolean flag = false,found=false;
            if(j>0)
                sb.append("\n");
            while (true) {
                if((m=br.readLine())==null){
                    break;
                }
                if (m.trim().equals("")) {
                    break;
                }
                list.add(m);
                if (m.length() == match.length() && !flag &&!found) {
                    flag = true;
                    for (int i = 0; i < m.length(); i++) {
                        if (m.charAt(i) == (' ') && match.charAt(i) != (' ')) {
                            flag = false;
                            break;
                        } else if (m.charAt(i) != (' ') && match.charAt(i) == (' ')) {
                            flag = false;
                            break;
                        }
                    }
                    if(flag)
                        flag=canBe(m, match);
                }
                if(flag &&!found){
                    ref=m;
                    found=true;
                }
            }
            if(!flag){
                sb.append("No solution.\n");
            }else{
                char []enc=getEnc(ref, match);
                for(int i=0;i<list.size();i++){
                    String temp=list.get(i);
                    for(int z=0;z<temp.length();z++){
                        if(temp.charAt(z)>='a' &&temp.charAt(z)<='z'){
                            sb.append(enc[temp.charAt(z)-97]);
                        }else{
                            sb.append(temp.charAt(z));
                        }
                    }
                    sb.append("\n");
                }
               
            }
        }
        System.out.print(sb);
    }
   
     static boolean canBe(String x,String in){
        boolean[] arr=new boolean[26];
        char[] arr2=new char[26];
        for(int i=0;i<x.length();i++){
            if(x.charAt(i)>='a' &&x.charAt(i)<='z')
                if(!arr[x.charAt(i)-97]){
                    arr[x.charAt(i)-97]=true;
                    arr2[x.charAt(i)-97]=in.charAt(i);
                }
                else{
                    if(arr2[x.charAt(i)-97]!=in.charAt(i)){
                        return false;
                    }
                }
        }
        return true;
    }
   
    static char[]getEnc(String x,String in){
        char[] arr=new char[26];
        for(int i=0;i<x.length();i++){
            if(x.charAt(i)>='a' &&x.charAt(i)<='z')
                arr[x.charAt(i)-97]=in.charAt(i);
        }
        return arr;
    }
}

Thursday, 1 November 2012

UVA - 11461 - Square Numbers

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

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("");
        String m = "";
        HashSet<Integer> set=new HashSet<Integer>();
        for(int i=0;i*i<100001;i++){
            set.add(i*i);
        }
        while(true) {
            String []str=br.readLine().split(" ");
            int i=Integer.parseInt(str[0]);
            int j=Integer.parseInt(str[1]);
            if(i==0 &&j==0)
                break;
            int counter=0;
            for(int ind=i;ind<j+1;ind++){
                if(set.contains(ind)){
                    counter++;
                }
            }
            sb.append(counter).append("\n");
        }
        System.out.print(sb);
    }

}

UVA - 256 - Quirksome Squares (C solution)

#include <stdio.h>

int main()
{
    int x;
    while(scanf("%d",&x)==1){
        if(x==2)
            puts("00\n01\n81");
        else if(x==4)
            puts("0000\n0001\n2025\n3025\n9801");
        else if(x==6)
            puts("000000\n000001\n088209\n494209\n998001");
        else if(x==8)
            puts("00000000\n00000001\n04941729\n07441984\n24502500\n25502500\n52881984\n60481729\n99980001");
    }
    return 0;
}

UVA - 256 - Quirksome Squares (Java Solution)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        String m="";
        LinkedList<String[]> list=new LinkedList<String[]>();
        String arr[]={"00","01","81"};
        list.add(arr);
        String[] arr2={"0000","0001","2025","3025","9801"};
        list.add(arr2);
        String arr3[]={"000000","000001","088209","494209","998001"};
        list.add(arr3);
        String arr4[]={"00000000","00000001","04941729","07441984","24502500","25502500","52881984","60481729","99980001"};
        list.add(arr4);
       while((m=br.readLine())!=null) {
          int x=Integer.parseInt(m);
          for(int i=0;i<list.get((x/2)-1).length;i++){
              sb.append(list.get((x/2)-1)[i]).append("\n");
          }
        }
        System.out.print(sb);
    }
}