TOPIC

PROBLEM 1794 - URI Fórum 1.0

URI Online Judge asked 3 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Lucas Steffen replied 3 years ago

    Meu chapéu...

    Achei que por não estar na categoria Iniciante seria um pouco mais complexo do que isso. Vlw

  • João replied 3 years ago

    O problema só quer saber se é possível usar a lavadora e a secadora para todas as N peças, ou seja, se N está dentro do limite da lavadora (LA e LB) e dentro do limite da secadora (SA e SB).

  • Lucas Steffen replied 3 years ago

    Não compreendi, eu varo todo o intervalo entre min e max e verifico se é possível dividir entre algum valor nesse intervalo sendo que o resto fique entre ele.

    Se você notou o problema do meu algoritmo consegue imaginar uma entrada que não funciona?

    Vlw

  • Daniel Alves replied 3 years ago

    Lucas, você tem que fazer a seguinte verificação:

    if(n < la || n > lb || n < sa || n > sb)
            printf("impossivel\n");
    else
            printf("possivel\n");
  • Lucas Steffen replied 3 years ago

    Então.... os 10% me perseguem

    #include <stdio.h>
    
    int valor_entre (int valor, int min, int max)
    {
        return valor >= min && valor <= max;
    }
    
    int main (void)
    {
        int q, mod, qtd_roupas, possivel = 1;
        int min_lavadora, max_lavadora, min_secadora, max_secadora;
    
        scanf("%d %d %d %d %d", &qtd_roupas, &min_lavadora, &max_lavadora, &min_secadora, &max_secadora);
    
        // se o valor está entre os min-max então não precisa verificar
        if (!valor_entre(qtd_roupas, min_lavadora, max_lavadora)) {
            for (q = min_lavadora; q <= max_lavadora; ++q) {
                mod = qtd_roupas % q;
                // se mod == 0 então é divisão perfeita
                // se não, caso o resto caiba em min-max
                if (!mod || valor_entre(mod, min_lavadora, max_lavadora)) { break; }
            }
    
            // se for possível sai do for antes de acabar e ser q == max_secadora+1
            possivel = q <= max_lavadora;
        }
    
        // mesma verificação em baixo
        if (possivel && !valor_entre(qtd_roupas, min_secadora, max_secadora)) {
            for (q = min_secadora; q <= max_secadora; ++q) {
                mod = qtd_roupas % q;
    
                if (!mod || valor_entre(mod, min_secadora, max_secadora)) { break; }
            }
    
            possivel = q <= max_secadora;
        }
    
        puts(possivel ? "possivel" : "impossivel");
    
        return 0;
    }