Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1987. Mostrar todas as postagens
Mostrando postagens com marcador 1987. Mostrar todas as postagens

domingo, 28 de fevereiro de 2021

URI (BEECROWD) - 1987 - Divisibilidade Por 3 - Ad-Hoc - C e C++

Agora resolvi um problema Ad-Hoc e compartilho aqui com vocês a solução. O problema da vez é intitulado "Divisibilidade Por 3". Um exercício bem simples e bom para quem está iniciando! Vamos acompanhar a solução abaixo! :)

Plataforma: URI (BEECROWD)

Problema1987

Enunciado:

No mundo da matemática, para sabermos se um grande número é divisível por outro existe uma regra, chamada de regra de divisibilidade. Um número natural é divisível por 3 quando a soma de todos os seus algarismos forma um número divisível por 3, ou seja, um múltiplo de 3.

Ex1: 1.104 é divisível por 3?

Resposta: SIM. É divisível por 3, pois seus algarismos quando somados: 1 + 1 + 0 + 4 = 6, que é um número divisível por 3 (porque 6 ÷ 3 = 2, que é um número natural).

Ex2: 2.791.035 é divisível por 3?

Resposta: SIM. 2.791.035 é constituído de algarismos que somados: 2 + 7 + 9 + 1 + 0 + 3 + 5 = 27, gera um número divisível por 3 (pois 27 ÷ 3 = 9, número natural).

Linguagens: C e C++

Solução:

Primeiramente, utilizei todas as variáveis como unsigned int porque o problema não trabalha com números negativos. Fiz um for para pegar sempre o último dígito e acumular este valor numa variável soma. A cada iteração o número é dividido por 10, ou seja, despreza o último dígito. Assim consigo somar todos os dígitos do número. Depois disso basta ver se a variável soma é divisível por três.

Código em C:

#include <stdio.h>

int main() {
    
    unsigned int n, m, i, resultante, soma;
    
    while (scanf("%u %u", &n, &m) != EOF) {
        
        soma = 0;
        resultante = m;
    
        for (i = 0; i < n; i++) {
            soma += resultante % 10;
            resultante /= 10;
        }
        
        printf("%u ", soma);
        if (soma % 3 == 0)
            printf("sim\n");
        else
            printf("nao\n");
        
    }

    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main() {
    
    unsigned int n, m, i, resultante, soma;
    
    while (cin >> n >> m) {
        
        soma = 0;
        resultante = m;
    
        for (i = 0; i < n; i++) {
            soma += resultante % 10;
            resultante /= 10;
        }
        
        cout << soma << " ";
        if (soma % 3 == 0)
            cout << "sim" << endl;
        else
            cout << "nao" << endl;
        
    }

    return 0;
}

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