Thursday, January 05, 2012

Solucion a 10035 - Primary Arithmetic [http://uva.onlinejudge.org] con Java

Solucion a 10035 - Primary Arithmetic [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10035 - Primary Arithmetic [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.1 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  String num1, num2; // para los numeros a asumar
  byte numAcarreo; // para contar los acarreos
  byte aux; // para las sumas temporales
  int i, j; // para los bucles

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  num1 = Lee.next();
  num2 = Lee.next();
  while (!num1.equals("0") || !num2.equals("0")) {
   i = num1.length() - 1;
   j = num2.length() - 1;
   aux = 0;
   numAcarreo = 0;
   while (i >= 0 && j >= 0) {
    if ((num1.charAt(i) - '0') + (num2.charAt(j) - '0') + aux > 9) {
     aux = 1;
     numAcarreo++;
    } else
     aux = 0;
    i--;
    j--;
   }
   // si el primer numero termino de evaluarse
   if (i >= 0) {
    while (i >= 0) {
     if ((num1.charAt(i) - '0') + aux > 9) {
      aux = 1;
      numAcarreo++;
     } else
      aux = 0;
     i--;
    }
   } else if (j >= 0) {
    while (j >= 0) {
     if ((num2.charAt(j) - '0') + aux > 9) {
      aux = 1;
      numAcarreo++;
     } else
      aux = 0;
     j--;
    }
   }
   // mostramos el resultado
   if (numAcarreo > 1)
    System.out.println(numAcarreo + " carry operations.");
   else if (numAcarreo == 1)
    System.out.println("1 carry operation.");
   else
    System.out.println("No carry operation.");
   num1 = Lee.next();
   num2 = Lee.next();
  }
 }
}

No comments: