(UVA) 344 - Roman Digititis - Solução

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        Main processando = new Main();
        processando.takeInput();
       
        System.exit(0);
    }

    List<Integer> geraQuantidade(int numeroEntrada) {
        List<Integer> lista = new ArrayList<Integer>();
   
        int n = 1;
        int i = 0;
        int v = 0;
        int x = 0;
        int l = 0;
        int c = 0;

        while (n <= numeroEntrada) {
            int valor = n;
           
            i += verificaI(n);
            v += verificaV(n);
            x += verificaX(n);
            if (n < 10) {
           
            }
            else if (n >= 10 && n < 20) {
                x++;
            }
            else if (n >= 20 && n < 30) {
                x += 2;
            }
            else if (n >= 30 && n < 40) {
                x += 3;
            }
            else if (n >= 40 && n < 50) {
                l++;
                x++;
            }
            else if (n >= 50 && n < 60) {
                l++;
            }
            else if (n >= 60 && n < 70) {
                l++;
                x++;
            }
            else if (n >= 70 && n < 80) {
                l++;
                x += 2;
            }
            else if (n >= 80 && n < 90) {
                l++;
                x += 3;
            }
            else if (n >= 90 && n < 100) {
                c++;
                x++;
            }
            else { // n == 100
                c++;
            }
           
            n++;
        }
       
        lista.add(i);
        lista.add(v);
        lista.add(x);
        lista.add(l);
        lista.add(c);
       
        return lista;
    }       

    int verificaI(int valor) {
        int qteI = 0;
        
        if ((valor+1)%5 == 0) {
            qteI++;
        }
        else {
            while (valor%5 != 0) {
                qteI++;
                valor--;
            }
        }
       
        return qteI;
    }
   
    int verificaV(int valor) {
        int qteV = 0;
        
        if ((valor+1)%5 == 0 && ((valor+1)%10 != 0)) { // para quando é 4, 9, 14, 19, 24, ...
            qteV++;
        }
        else if ((valor%5 == 0) && (valor%10 != 0)) { // para quando é 5
            qteV++;
        }
        else if ((valor%5 != 0) && (valor%10 > 5) && (valor%10 < 9)) {
            qteV++;
        }
       
        return qteV;
    }
   
    int verificaX(int valor) {
        int qteX = 0;
        
        if ((valor+1)%10 == 0) {
            qteX++;
        }
       
        return qteX;
    }

    void takeInput() throws NumberFormatException, IOException {
        String line = "";
        StringTokenizer tokenizer = null;
        int i = 0;
        List<Integer> lista = new ArrayList<Integer>();
       
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       
        while (((line = br.readLine()) != null)) {
            tokenizer = new StringTokenizer(line);
            i = Integer.parseInt(tokenizer.nextToken());
           
            if (i == 0) {
                return;
            }   
             
            lista = geraQuantidade(i);
            System.out.println(i + ": " + lista.get(0) + " i, " + lista.get(1) + " v, " + lista.get(2) + " x, " + lista.get(3) + " l, " + lista.get(4) + " c");

        }
    }
}

Comments

Popular posts from this blog

(Coderbyte) Dash Insert II - Solução

(Coderbyte) Run Length - Solução

(Coderbyte) Counting Minutes I - Solução