Pesquisar este blog

Livros Recomendados

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;
}

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