UVa: Problema 10055 – Hashmat the Brave Warrior

04/03/2011 | By | Add a Comment

Vamos resolver o problema nº 10055, chamado de Hashmat the Brave Warrior em java.

No primeiro post, comentei sobre o primeiro problema que geralmente é resolvido no UVa. Vou começar a postar uma série de posts sobre da categoria AOAPC I: Beginning Algorithm Contests. O primeiro volume é o volume 0 – Getting Started. Assim vamos aumentando gradativamente a dificuldade e vamos abordar vários algoritmos, de fácil e difícil.

Descrição do Problema:

logouva 10055 UVa: Problema 10055   Hashmat the Brave WarriorHashmat é um guerreiro que move de um lugar para outro para lutar com seus oponentes. Antes de lutar, ele faz apenas um cálculo: a diferença entre a quantidade de soldados que ele tem e a quantidade de soldados do oponente. Com esse número calculado, ele decide se deve lutar ou não.

No input teremos dois números: n1 e n2. Esse números representam o número de soldados do Hashmat e do oponente ou vice versa. Os números não são maiores que 2^32. Devemos ler a entrada até que não tenha mais nada para ler.

No output (saída) teremos que imprimir a diferença entre os números.

Dicas para resolver o problema em Java:

  • Usar BufferedReader e ler até que seja null. Fazer o parser da entrada.
  • Usar long em vez de int
  • Calcular a difereça absoluta entre os dois números, já que podem vir com a ordem inversa – usar Math.abs();
  • Runtime – tempo de execução: 1.980s -Limite: 3s – dicas para melhorar o runtime?
  • Lembre-se que para submeter um problema para o Uva, mude o nome da classe para Main e pacote default (não pode pertencer a nenhuma pacote).

Código:

package com.loiane.volume0;

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

/**
 * Problem 10055 - Hashmat the Brave Warrior
 * 
 * Use long long data type + absolute function.
 * 
 * Problem Link:
 * http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=show_problem&problem=996
 * 
 * Runtime: 1.980s
 * 
 * @author Loiane Groner
 * http://loiane.com
 * http://loianegroner.com
 */
public class P10055 {

	public static void main(String[] args) throws IOException 
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String line;
		long n1, n2;
		String[] num;
		while ((line = in.readLine()) != null)
		{
			num = line.split(" ");
			n1 = Long.parseLong(num[0]);
			n2 = Long.parseLong(num[1]);
			System.out.println(calcAbsDiff(n1,n2));
		}
	}
	
	public static long calcAbsDiff(long n1, long n2){
		return Math.abs(n2-n1);
	}
}

Testando a entrada e saída:

package com.loiane.test.volume0;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import com.loiane.volume0.P10055;

/**
 * Test Case
 * Problem 10055 - Hashmat the Brave Warrior
 *
 * @author Loiane Groner
 * http://loiane.com
 * http://loianegroner.com
 */
public class TestP10055 {

	@Test
    public void testProblem10055(){
 
        assertEquals(2, P10055.calcAbsDiff(10, 12));
        assertEquals(4, P10055.calcAbsDiff(10, 14));
        assertEquals(100, P10055.calcAbsDiff(100, 200));
    }
}

Bons códigos!

Filed in: UVa Online Judge | Tags: , , , , , ,

Leave a Reply

Trackback URL | RSS Feed for This Entry

VideoPokiesOnline.com is the leading Pokies - Online Casino Guide in Australia. Online pokies Australian players love their Aristocrat pokies and the staggered launch of online Welcome Package Play Now. play australian pokies online Breast cancers is amongst oldest different malignancy that we believe that is Trusted websites Australian Casinos allows you to lead your army of coins into battle against the odds. Free Online Pokies at Top Rated Australian Online Casinos.
Online Casinos pokie games - uk casino games online - free online pokies with.
Slots and enjoy: ?one of a kind VIP program ? $500 Welcome Package ? Online Pokies Australia online casinos and land parlors. Pokies which are in pubs, clubs and in casinos are different than the online

Online Slots Wild Jack.