Pesquisar este blog

Livros Recomendados

quarta-feira, 24 de fevereiro de 2021

URI (BEECROWD) - 1837 - Prefácio - Iniciante - C e C++

Procurando pela solução do problema "Prefácio", do URI/BEECROWD? Aqui você encontra! Nesse post eu resolvi este problema da categoria iniciante. Confira abaixo!

Plataforma: URI (BEECROWD)

Problema1837

Enunciado:

Começou a 4ạ Maratona de Programação da UFFS! Esperamos que você aproveite as próximas horas que passará conosco e que se divirta muito! Boa sorte!

Este é o 3ọ ano do Clube de Programação, projeto de extensão que visa em primeiro lugar tornar os programadores da região brasileira conhecida como Fronteira Sul muito mais aptos a enfrentar os desafios computacionais tanto da academia quanto do mercado do trabalho. Nossa principal estratégia está em promover oficinas e treinos para competições de Programação, não apenas para estudantes da UFFS, mas para quem quiser participar. Apesar das várias dificuldades, estamos muito felizes com os resultados que temos conquistado. Em parceria com a UNOCHAPECÓ, a URI e a UNOESC, colaboramos para fazer de Chapecó nos dois últimos anos a 2ª maior sede do Brasil na etapa regional da Maratona de Programação, o que é mais um indicador do entusiasmo que o povo daqui tem por Programação.

Para aquecer você para esta competição, vamos pedir que você desenvolva um programa que calcule o quociente e o resto da divisão de dois números inteiros, pode ser? Lembre que o quociente e o resto da divisão de um inteiro a por um inteiro não-nulo b são respectivamente os únicos inteiros q e r tais que 0 ≤ r < |b| e:

a = b × q + r

Caso você não saiba, o teorema que garante a existência e a unicidade dos inteiros q e r é conhecido como ‘Teorema da Divisão Euclidiana’ ou ‘Algoritmo da Divisão’.

Linguagens: C e C++

Solução:

Ambos os códigos abaixo seguem a mesma lógica. Fiz uma função para calcular o módulo de um número, o que facilita na hora de ler o código. Basicamente calculo o resto da divisão inteira, que é um dos valores necessários na resposta, e também faço isso para remover este valor do valor "a", assim garanto que a divisão (a-r/b) será inteira e não terá resto. Este é o primeiro valor da resposta (variável d), o segundo é o resto da divisão inteira (variável r).

Código em C:

#include <stdio.h>

int modulo(int a, int b) {
    int m = a % b;
  
    if (m < 0)
        m = (b < 0) ? m - b : m + b;

    return m;
}

int main() {
    
    int a, b, d, r;
    
    scanf("%i %i", &a, &b);
    
    r = modulo(a, b);
    d = (a - r) / b; 
    printf("%i %i\n", d, r);
    
    return 0;
}

Código em C++:

#include <iostream>

int modulo(int a, int b) {
    int m = a % b;
  
    if (m < 0)
        m = (b < 0) ? m - b : m + b;

    return m;
}

int main() {
    
    int a, b, d, r;
    
    std::cin >> a >> b;
    
    r = modulo(a, b);
    d = (a - r) / b; 
    std::cout << d << " " << r << std::endl;
    
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas