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)
Problema: 1987
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; }
#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; }