Pages

Wednesday 31 October 2012

UVA - 10041 - Vito's Family

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


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        int cases=Integer.parseInt(br.readLine());
        for(int i=0;i<cases;i++) {
          String str[]=br.readLine().split(" ");
          int n=Integer.parseInt(str[0]);
          int arr[]=new int[str.length-1];
          for(int j=0;j<arr.length;j++){
            arr[j]=Integer.parseInt(str[j+1]);
          }
          Arrays.sort(arr);
          int sum=0;
          int mid=0;
          if(arr.length%2==1)
            mid=arr[arr.length/2];
          else
            mid=(arr[arr.length/2]+arr[(arr.length+1)/2])/2;
          for(int j=0;j<arr.length;j++){
            sum+=Math.abs(mid-arr[j]);
          }
          sb.append(sum).append("\n");
        }
        System.out.print(sb);
    }
}

UVA - 10474 - Where is the Marble?

/*Here i used Linear search .. But better algorithm is used binary search ... But when two numbers have the same values .. You must choose the least index number*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        int cases=1;
        while(true) {
          String str[]=br.readLine().split(" ");
          int n=Integer.parseInt(str[0]);
          int q=Integer.parseInt(str[1]);
          if(n==0 && q==0)
              break;
          int arr[]=new int[n];
          for(int i=0;i<n;i++){
             arr[i]=Integer.parseInt(br.readLine());
          }  
          Arrays.sort(arr);
          int num=0,index=-1;
          sb.append("CASE# ").append(cases).append(":").append("\n");
          for(int i=0;i<q;i++){
             num=Integer.parseInt(br.readLine());
             index=search(arr, num);
             if(index>-1){
               sb.append(num).append(" found at ").append((index+1)).append("\n");
             }else{
               sb.append(num).append(" not found").append("\n"); 
             }
          }
         cases++;
        }
        System.out.print(sb);
    }
 
    static int search(int arr[],int x){
        for(int i=0;i<arr.length;i++){
            if(arr[i]==x)
                return i;
        }
        return -1;
    }
}

UVA - 10679 - I Love Strings!!

/*Well one of the best solution to this problem is  Aho Corasick algorithm.
It will get better run-time  than my implemented algorithm*/

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 len=Integer.parseInt(br.readLine());
        for(int i=0;i<len;i++) {
            String test=br.readLine();
            int q=Integer.parseInt(br.readLine());
            for(int j=0;j<q;j++) {
                String get=br.readLine();
                if(!findPattern(get, test)){
                    sb.append("n\n");
                }else{
                    sb.append("y\n");
                }
            }
        }
        System.out.print(sb);
    }
   
    static boolean findPattern(String Pattern,String str){
        int count=0;
        for(int i=0,j=0;i<str.length();i++){
            if(Pattern.charAt(j)==str.charAt(i)){
                count++;
                j++;
            }else{
                j=0;
                count=0;
            }
            if(count==Pattern.length()){
                return true;
            }
        }
        return false;
    }
}

Tuesday 30 October 2012

UVA - 11161 - Help My Brother (II)

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer("");
        BigInteger arr[] = new BigInteger[1501];
        BigInteger sum[] = new BigInteger[1501];
        arr[0] = BigInteger.ZERO;
        sum[0]=BigInteger.ZERO;
        arr[1] = BigInteger.ZERO;
        sum[1]=BigInteger.ZERO;
        arr[2] = BigInteger.ONE;
        sum[2]=BigInteger.ONE;
        arr[3] = BigInteger.valueOf(2);
        sum[3]= BigInteger.valueOf(3);
        for (int i = 4; i < 1501; i++) {
            arr[i] = arr[i - 2].add(arr[i - 1]);
            sum[i]=sum[i-1].add(arr[i]);
        }
        int i=1;
        while (true) {
            int m = Integer.parseInt(br.readLine());
            if (m == 0) {
                break;
            }
            BigInteger two=BigInteger.valueOf(2);
            sb.append("Set ").append(i).append(":\n");
            if((arr[m].mod(two)).compareTo(BigInteger.ZERO)==0){
                sb.append(sum[m-1].add(arr[m].divide(two))).append("\n");
            }else{
                sb.append(sum[m-1].add((arr[m].add(BigInteger.ONE)).divide(two))).append("\n");
            }
            i++;
        }
        System.out.print(sb);
    }
}

Monday 29 October 2012

UVA - 583 - Prime Factors

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 {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        StringBuffer sb = new StringBuffer("");
        String m = "";
        while(true) {
           int x=Integer.parseInt(br.readLine());
           if(x==0)
               break;
           int[] arr=primeFactors(x);
           sb.append(x).append(" =");
           for(int i=0;i<arr.length;i++){
               if(i>0)
                    sb.append(" x");
               sb.append(" ").append(arr[i]);
           }
            sb.append("\n");
        }
        System.out.print(sb);
    }
   
    static int[] primeFactors(int x){
        LinkedList<Integer> list=new LinkedList<Integer>();
        if(x<0){
            list.add(-1);
        }
        int temp=Math.abs(x);
        boolean notprime=false,entered=false;
        while(temp>1 &&!notprime){
            entered=false;
            for(int i=2;i<Math.sqrt(temp)+1;i++){
                if(temp%i==0){
                    list.add(i);
                    temp/=i;
                    notprime=false;
                    entered=true;
                    break;
                }
            }
            if(!entered)
                 notprime=true;
        }
        if(notprime){
                list.add(temp);
            }
        int[] arr=new int[list.size()];
        for(int i=0;i<arr.length;i++){
            arr[i]=list.get(i);
        }
        return arr;
    }
}

UVA - 290 - Palindroms <---> smordnilaP

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

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 = "";
        while((m=br.readLine())!=null) {
            int index=minBase(m);
            if(index<2)
                index=2;
            if(!pali(m)){
                for(int i=15;i>index-1;i--){
                    if(i<15)
                        sb.append(" ");
                    sb.append(baseCount(m,i,1));
                }
            }else{
                 for(int i=15;i>index-1;i--){
                    if(i<15)
                        sb.append(" ");
                    sb.append("0");
                }
            }
            for(int i=2;i<index;i++){
                sb.append(" ").append("?");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
   
     static int minBase(String temp) {
        int max=-1;
        temp=temp.toUpperCase();
            for(int i=0;i<temp.length();i++){
                if(temp.charAt(i)>='A' && temp.charAt(i)<='Z' ){
                    if(max<temp.charAt(i)-'A'+10)
                        max=temp.charAt(i)-'A'+10;
                }
                else if(temp.charAt(i)>='0' && temp.charAt(i)<='9' ){
                    if(max<temp.charAt(i)-'0')
                        max=temp.charAt(i)-'0';
                }
            }
        return max+1;
    }
    
    static boolean pali(String s){
        for(int i=0,j=s.length()-1;i<s.length()/2;i++,j--){
           if(s.charAt(i)!=s.charAt(j)) {
                return false;
            }
        }
        return true;
    }
   
    static int baseCount(String x,int base,int i){
        BigInteger first=new BigInteger(x,base);
        BigInteger second=new BigInteger(new StringBuilder(x).reverse().toString(),base);
        BigInteger last=first.add(second);
        String str=last.toString(base);
        if(pali(str))
            return i;
        return baseCount(str,base,++i);
    }
}

UVA - 12085 - Mobile Casanova

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Stack;

public class Main {

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

    static String res(int[] values) {
      if (values.length == 0) {
        return "";
      }
      StringBuilder sb=new StringBuilder("");
      boolean first = false;
      int begin = values[0];

      sb.append("0").append(values[0]);

      for (int i = 1 ; i < values.length; i++) {
        if (values[i] - values[i-1] == 1) {
          first = true;
          continue;
        } else {
          if (first) {
            sb.append(checkDiff(begin+"", values[i-1]+""));
          } else {
            sb.append("\n");
          }
          first = false;
          begin = values[i];
          sb.append("0").append(values[i]);
        }
      }

      if (first) {
          sb.append(checkDiff(begin+"", values[values.length-1]+""));
      } else {
        sb.append("\n");
      }
      return sb.toString();
    }
      
    static String checkDiff(String x, String y) {
        int index = 0;
        for (int i = 0; i < x.length(); i++) {
            if (x.charAt(i) != y.charAt(i)) {
                index = i;
                break;
            }
        }
        return "-"+y.substring(index)+"\n";
    }

}

UVA - 661 - Blowing Fuses

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 ind=1;
        while (true) {
            String[] str = br.readLine().split(" ");
            int n = Integer.parseInt(str[0]);
            int m = Integer.parseInt(str[1]);
            int c = Integer.parseInt(str[2]);
            if (n == 0 && m == 0 && c == 0) {
                break;
            }
            boolean[] used = new boolean[n];
            int[] cap = new int[n];
            for (int i = 0; i < n; i++) {
                cap[i] = Integer.parseInt(br.readLine());
            }
            int sum = 0, max = -1;
            boolean over = false;
            for (int i = 0; i < m; i++) {
                int index = Integer.parseInt(br.readLine())-1;
                if (!over) {
                    if (!used[index]) {
                        used[index] = true;
                        sum += cap[index];
                        if (sum > max) {
                            max = sum;
                        }
                        if (sum > c) {
                            over = true;
                            continue;
                        }
                    } else {
                        used[index] = false;
                        sum -= cap[index];
                    }
                }
            }
            sb.append("Sequence ").append(ind).append("\n");
            if(over){
               sb.append("Fuse was blown.").append("\n");
            }else{
               sb.append("Fuse was not blown.").append("\n");
               sb.append("Maximal power consumption was ").append(max).append(" amperes.").append("\n");
            }
            sb.append("\n");
            ind++;
        }
        System.out.print(sb);
    }
}

Sunday 28 October 2012

UVA - 496 - Simply Subsets


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

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 = "";
        ArrayList<Integer> arr1, arr2;
        while ((m = br.readLine()) != null) {
            arr1 = new ArrayList<Integer>();
            StringTokenizer st = new StringTokenizer(m);
            int n = st.countTokens();
            for (int i = 0; i < n; i++) {
                arr1.add(Integer.parseInt(st.nextToken()));
            }
            arr2 = new ArrayList<Integer>();
            st = new StringTokenizer(br.readLine());
            n = st.countTokens();
            for (int i = 0; i < n; i++) {
                arr2.add(Integer.parseInt(st.nextToken()));
            }
            if (arr1.size() < arr2.size()) {
                int count = 0;
                for (int i = 0; i < arr1.size(); i++) {
                    if (arr2.contains(arr1.get(i))) {
                        count++;
                    }
                }
                if (count == arr1.size()) {
                    sb.append("A is a proper subset of B\n");
                } else if (count == 0) {
                    sb.append("A and B are disjoint\n");
                } else {
                    sb.append("I'm confused!\n");
                }
            } else if (arr1.size() > arr2.size()) {
                int count = 0;
                for (int i = 0; i < arr2.size(); i++) {
                    if (arr1.contains(arr2.get(i))) {
                        count++;
                    }
                }
                if (count == arr2.size()) {
                    sb.append("B is a proper subset of A\n");
                } else if (count == 0) {
                    sb.append("A and B are disjoint\n");
                } else {
                    sb.append("I'm confused!\n");
                }
            } else {
                int count = 0;
                for (int i = 0; i < arr2.size(); i++) {
                    if (arr1.contains(arr2.get(i))) {
                        count++;
                    }
                }
                if (count == arr2.size()) {
                    sb.append("A equals B\n");
                } else if (count == 0) {
                    sb.append("A and B are disjoint\n");
                } else {
                    sb.append("I'm confused!\n");
                }
            }
        }
        System.out.print(sb);
    }
}

UVA - 11530 - SMS Typing


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 n = Integer.parseInt(br.readLine());
        String m = "";
        for(int i=1;i<n+1;i++) {
            m=br.readLine();
            int sum=0;
            sb.append("Case #").append(i).append(": ");           
            for(int j=0;j<m.length();j++){
                sum+=check(m.charAt(j));
            }
            sb.append(sum).append("\n");
        }
        System.out.print(sb);
    }

    static int check(char x){
        if(x=='b' ||x=='e'||x=='h'
                ||x=='k'||x=='n'||x=='q'
                    ||x=='u'||x=='x')
           return 2;
        if(x=='c' ||x=='f'||x=='i'
                ||x=='l'||x=='o'||x=='r'
                    ||x=='v'||x=='y')
           return 3;
        if(x=='s'||x=='z')
           return 4;
        return 1;
    }
}

Saturday 27 October 2012

UVA - 12250 - Language Detection

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);
        StringBuffer sb = new StringBuffer("");
        int i = 1;
        String m = "";
        while (true) {
            m = br.readLine();
            if (m.equals("#")) {
                break;
            }
            sb.append("Case ").append(i).append(": ").append(getStr(m)).append("\n");
            i++;
        }
        System.out.print(sb);
    }

    static String getStr(String x) {
        if (x.equals("HELLO")) {
            return "ENGLISH";
        }
        if (x.equals("HOLA")) {
            return "SPANISH";
        }
        if (x.equals("HALLO")) {
            return "GERMAN";
        }
        if (x.equals("BONJOUR")) {
            return "FRENCH";
        }
        if (x.equals("CIAO")) {
            return "ITALIAN";
        }
        if (x.equals("ZDRAVSTVUJTE")) {
            return "RUSSIAN";
        }
        return "UNKNOWN";
    }
}

UVA - 10880 - Colin and Ryan


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 {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        StringBuffer sb = new StringBuffer("");
        int n = Integer.parseInt(br.readLine());
        String m = "";
        for (int i = 1; i < n + 1; i++) {
            String[] str = br.readLine().split(" ");
            int x = Integer.parseInt(str[0]);
            int y = Integer.parseInt(str[1]);
            long arr[] = div(x - y, y);
            sb.append("Case #").append(i).append(":");
            for (int j = 0; j < arr.length; j++) {
                sb.append(" ").append(arr[j]);
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }

    static long[] div(int x, int r) {
        LinkedList<Long> list = new LinkedList<Long>();
        long[] arr;
        if (x==0) {
            arr = new long[1];
            arr[0] = 0;
            return arr;
        }
        if (r > x) {
            return new long[0];
        }
        for (long i = 1; i < Math.sqrt(x) + 1; i++) {
            if (x % i == 0) {
                if (i > r && !list.contains(i)) {
                    list.add(i);
                }
                if ((x / i) > r) {
                    if(!list.contains(x/i))
                        list.add(x / i);
                }
            }
        }
        arr = new long[list.size()];
        for (int i = 0; i < list.size(); i++) {
            arr[i] = list.get(i);
        }
        Arrays.sort(arr);
        return arr;
    }
}

Friday 26 October 2012

UVA - 10656 - Maximum Sum (II)

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int cases,i,j=0;
    while(1){
        scanf("%d",&cases);
        if(cases==0)
            break;
        bool first=true;
        for(i=0;i<cases;i++){
          scanf("%d",&j);
          if(j!=0){
            if(!first)
                printf(" ");
            printf("%d",j);
            first=false;
          }
        }
        if(first)
            printf("0");
        printf("\n");

    }
    return 0;
}

UVA - 11965 - Extra Spaces


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

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 num = Integer.parseInt(br.readLine());
        String m="";
        for (int i = 1; i < num+1; i++) {
            int n=Integer.parseInt(br.readLine());
            if(i>1)
                sb.append("\n");
            sb.append("Case ").append(i).append(":\n");
            for (int j = 1; j < n+1; j++){
              
                StringBuilder temp=new StringBuilder();
                m=br.readLine();
                boolean flag=false;
                for(int z=0;z<m.length();z++){
                    if(m.charAt(z)==' '){
                        if(!flag){
                            temp.append(m.charAt(z));
                           flag=true;
                        }
                    }else{
                        flag=false;
                        temp.append(m.charAt(z));
                    }
                }
                sb.append(temp).append("\n");
            }
        }
        System.out.print(sb);
    }
 
}

UVA - 1230 - MODEX


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

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 num = Integer.parseInt(br.readLine());
        for (int i = 0; i < num; i++) {
            String str[]=br.readLine().split(" ");
            BigInteger x=new BigInteger(str[0]);
            int y=Integer.parseInt(str[1]);
            BigInteger n=new BigInteger(str[2]);
            sb.append(x.modPow(BigInteger.valueOf(y), n)).append("\n");
        }
        System.out.print(sb);
    }
  
}

UVA - 11821 - High-Precision Number


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

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 = "";
        int num = Integer.parseInt(br.readLine());
        for (int i = 0; i < num; i++) {
            BigDecimal bd = BigDecimal.ZERO;
            while (true) {
                BigDecimal bd2 = new BigDecimal(br.readLine());
                if (bd2.compareTo(BigDecimal.ZERO) == 0) {
                    break;
                }
                bd = bd.add(bd2);
            }
            sb.append(trail(bd)).append("\n");
        }
        System.out.print(sb);
    }
   
    static String trail(BigDecimal bd){
        String ans = bd.toString();
            if (ans.indexOf('.') != -1) {
                int lenOfSubString = ans.length() - 1;
                while (ans.charAt(lenOfSubString) == '0') {
                    lenOfSubString--;
                }
                if (ans.charAt(lenOfSubString) == '.') {
                    ans = ans.substring(0, lenOfSubString);
                } else {
                    ans = ans.substring(0, lenOfSubString + 1);
                }
            }
            return ans;
    }
}

UVA - 11715 - Car

#include <stdio.h>
#include <math.h>

int main()
{
    int cases,i=1;
    double u,v,a,t,s;
    while(1){
        scanf("%d",&cases);
        if(cases==0){
            break;
        }
        a=0;
        u=0;
        v=0;
        s=0;
        t=0;
        if(cases==1){
            scanf("%lf %lf %lf",&u,&v,&t);
            a=(v-u)/t;
            s=(u*t)+(0.5*(a*t*t));
            printf("Case %d: %.3lf %.3lf\n",i,s,a);
        }else if(cases==2){
            scanf("%lf %lf %lf",&u,&v,&a);
            t=(v-u)/a;
            s=(u*t)+(0.5*(a*t*t));
            printf("Case %d: %.3lf %.3lf\n",i,s,t);
        }else if(cases==3){
            scanf("%lf %lf %lf",&u,&a,&s);
            v=sqrt((u*u)+(2.0*a*s));
            t=(v-u)/a;
            printf("Case %d: %.3lf %.3lf\n",i,v,t);
        }else if(cases==4){
            scanf("%lf %lf %lf",&v,&a,&s);
            u=sqrt((v*v)-(2.0*a*s));
            t=(v-u)/a;
            printf("Case %d: %.3lf %.3lf\n",i,u,t);
        }
        i++;
    }
    return 0;
}

UVA - 392 - Polynomial Showdown

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int c8,c7,c6,c5,c4,c3,c2,c1,c0;
    while(scanf("%d %d %d %d %d %d %d %d %d",
          &c8,&c7,&c6,&c5,&c4,&c3,&c2,&c1,&c0)==9){
              bool flag=false;
          if(c8!=0){
              if(c8<0){
                printf("-");
              }
              if((int)fabs(c8)!=1){
                printf("%d",(int)fabs(c8));
              }
            printf("x^8");
            flag=true;
          }
          if(c7!=0){
              if(flag){
                  if(c7<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c7<0)
                    printf("-");
              }
              if((int)fabs(c7)!=1){
                printf("%d",(int)fabs(c7));
              }
            printf("x^7");
            flag=true;
          }
          if(c6!=0){
              if(flag){
                  if(c6<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c6<0)
                    printf("-");
              }
              if((int)fabs(c6)!=1){
                printf("%d",(int)fabs(c6));
              }
            printf("x^6");
            flag=true;
          }
          if(c5!=0){
              if(flag){
                  if(c5<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c5<0)
                    printf("-");
              }
              if((int)fabs(c5)!=1){
                printf("%d",(int)fabs(c5));
              }
            printf("x^5");
            flag=true;
          }
          if(c4!=0){
              if(flag){
                  if(c4<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c4<0)
                    printf("-");
              }
              if((int)fabs(c4)!=1){
                printf("%d",(int)fabs(c4));
              }
            printf("x^4");
            flag=true;
          }
          if(c3!=0){
              if(flag){
                  if(c3<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c3<0)
                    printf("-");
              }
              if((int)fabs(c3)!=1){
                printf("%d",(int)fabs(c3));
              }
            printf("x^3");
            flag=true;
          }
          if(c2!=0){
              if(flag){
                  if(c2<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c2<0)
                    printf("-");
              }
              if((int)fabs(c2)!=1){
                printf("%d",(int)fabs(c2));
              }
            printf("x^2");
            flag=true;
          }
          if(c1!=0){
              if(flag){
                  if(c1<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c1<0)
                    printf("-");
              }
              if((int)fabs(c1)!=1){
                printf("%d",(int)fabs(c1));
              }
            printf("x");
            flag=true;
          }
          if(c0!=0 || !flag){
              if(flag){
                  if(c0<0){
                    printf(" - ");
                  }else{
                    printf(" + ");
                  }
              }else{
                  if(c0<0)
                    printf("-");
              }
              printf("%d",(int)fabs(c0));
          }
          printf("\n");
          flag=true;
          }
    return 0;
}

Wednesday 24 October 2012

UVA - 10137 - The Trip

#include <stdio.h>

int main() {
    int n,i;
    double sum=0,avg=0;
      while(1){
            scanf("%d",&n);
            double arr[n];
            if(n==0)
                break;
            sum=0;
            avg=0;
            for(i=0;i<n;i++){
                scanf("%lf",&arr[i]);
                sum+=arr[i];
            }
            avg=sum/n;

            double sum1=0,sum2=0,dif=0;
            for(i=0;i<n;i++){
                dif=(double)(long)((arr[i] - avg) * 100) / 100.0;
                if(dif<0)
                    sum2-=dif;
                else
                    sum1+=dif;
            }
            if(sum2>sum1){
                printf("$%.2lf\n", sum2);
            }else{
                printf("$%.2lf\n", sum1);
            }
          }
    return 0;
}


UVA - 11774 - Doom's Day


#include <stdio.h>

int gcd(int x,int y){
    if(y==0)
        return x;
    return gcd(y,x%y);
}

int main() {
    int x, y,cases,i;
    long ans;
       scanf("%d",&cases);
       for(i=1;i<cases+1;i++){
            scanf("%d %d",&x,&y);
            if(x==y)
                ans=2;
            else{
                int temp=gcd(x,y);
                ans=x/temp+y/temp;
            }
            printf("Case %d: %ld\n",i,ans);
          }
    return 0;
}

UVA - 10427 - Naughty Sleepy Boys


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 {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        StringBuffer sb = new StringBuffer("");
        String m = "";
        int []digits=new int[9];
        for(int i=1,temp=9;i<9;i++,temp*=10){
            digits[i]=digits[i-1]+temp*i;
        }
        while ((m = br.readLine()) != null) {
            int x = Integer.parseInt(m);
            if(x==-1)
                break;
            int index=0;
            for(int i=1;i<9;i++){
                if(digits[i]>=x){
                    index=i-1;
                    break;
                }
            }
            int temp=x-digits[index]-1;
            int indAns=temp/(index+1);
            int rem=temp%(index+1);
            int start=(int) Math.pow(10, index);
            String solution=start+indAns+"";
            sb.append(solution.charAt(rem)).append("\n");
           
        }
        System.out.print(sb);
    }


}

Tuesday 23 October 2012

UVA - 12499 - I am Dumb 3


#include <stdio.h>

int main() {
    int x, y, i, cases, j;
    int arr[51];
       scanf("%d",&cases);
       for(i=1;i<cases+1;i++){
            scanf("%d %d",&x,&y);
           
            for(j=0;j<x;j++){
                scanf("%d",&arr[j]);
            }
            arr[x]=y;
            int temp=0;
            for(j = 0; j < x; j+=2){
                temp^= arr[j+1]-arr[j];
            }
            printf("Case %d: ",i);
            if(temp!=0)
                printf("First Player\n");
            else
                printf("Second Player\n");
        }
    return 0;
}

UVA - 10190 - Divide, But Not Quite Conquer!


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 {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        StringBuffer sb = new StringBuffer("");
        String m = "";
        while ((m = br.readLine()) != null) {
            String[] str = m.split(" ");
            int x = Integer.parseInt(str[0]);
            int y = Integer.parseInt(str[1]);
            int[] list = getBoo(x, y);
            if (list.length == 0) {
                sb.append("Boring!\n");
            } else {
                for (int i = 0; i < list.length; i++) {
                    if (i > 0) {
                        sb.append(" ");
                    }
                    sb.append(list[i]);
                }
                sb.append("\n");
            }
        }
        System.out.print(sb);
    }

    static int[] getBoo(int x, int m) {
        if(x<=1 || m<=1)
            return new int[0];
        LinkedList<Integer> list = new LinkedList<Integer>();
        boolean flag = true;
        int temp = x;
        while (temp > 1) {
            list.add(temp);
            if (temp % m == 0) {
                temp /= m;
            } else {
                flag = false;
                break;
            }
        }
        if (flag) {
            list.add(1);
            int arr[] = new int[list.size()];
            for (int i = 0; i < list.size(); i++) {
                arr[i] = list.get(i);
            }
            return arr;
        } else {
            return new int[0];
        }
    }
}

UVA - 443 - Humble Numbers

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;

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 = "";
        ArrayList<Long> lolz = new ArrayList<Long>();
        int[] p = {2, 3, 5, 7};
        for (int i = 1; i < 11; i++) {
            lolz.add((long) i);
        }
        int index = 0;
        while (lolz.size() < 6843) {
            long temp = lolz.get(index);
            for (int i = 0; i < p.length; i++) {
                if (!lolz.contains(temp * p[i])) {
                    lolz.add(temp * p[i]);
                    long[] arr = new long[lolz.size()];
                    for (int j = 0; j < arr.length; j++) {
                        arr[j] = lolz.get(j);
                    }
                    Arrays.sort(arr);
                    lolz.clear();
                    for (int j = 0; j < arr.length; j++) {
                        lolz.add(arr[j]);
                    }
                }
               
            }
            index++;
        }
        long[] arr = new long[lolz.size()];
                    for (int j = 0; j < arr.length; j++) {
                        arr[j] = lolz.get(j);
                    }
        while (true) {
            int x = Integer.parseInt(br.readLine());
            if (x == 0) {
                break;
            }
            String st=getRank(x);
            sb.append("The ");
            sb.append(x).append(st);
            sb.append(" humble number is ");
            sb.append(arr[x-1]).append(".\n");
        }
        System.out.print(sb);
    }
   
    static String getRank(int x){
        int temp=x%100;
        int z=x%10;
        if(temp>9 && temp<20){
            return "th";
        }else{
            if(z==1)
              return "st";
            else if(z==2)
              return "nd";
            else if(z==3)
               return "rd";
            else
               return "th";              
        }
    }
}