luizaugustomm 0 Posted April 14, 2011 Report Share Posted April 14, 2011 Olá, pessoal. Estou resolvendo uns problemas para treinar para a olimpíada de programação da minha região aqui no Brasil. Eu fui resolver este problema:http://br.spoj.pl/problems/ONZE/a, que até não é muito difícil. Consegui implementar o algoritmo em C, só que encontrei um problema: precisei guardar em uma variável o valor 10^1000. Eu utilizei o tipo de dados long long int, só que como eu usei a função lpow() para calcular a potência, tive que fazer um cast, pois esta função retorna um valor do tipo long double. Bom, eu acho que o problema se resume a isso, eu não sei como fazer com que o cálculo da potência 10^1000 possa ser guardado numa variável do tipo inteiro sem perder seu valor correto. Segue o código em C: #include <stdio.h> #include <math.h> int main() { long n, nn; long long int tamanhoMaximo = (long long int) powl(10, 1000); //Esta é a operação em questão char resto; int i; do { scanf("%ld", &n); if ((n > 0) & (n < tamanhoMaximo)) { nn = n; while (nn >= 100) { resto = nn % 10; nn = nn / 10 - resto; } if (nn % 11 == 0) { printf("%ld is a multiple of 11.\n", n); } else { printf("%ld is not a multiple of 11.\n", n); } } } while (n); return 0; } Bom, pessoal, espero que vocês possam me ajudar a resolver este problema. Se alguém souber, também poderia me dizer quais são todos os tipos de dados em C? Só a título de curiosidade. Obrigado. Link to post Share on other sites
pedrosorio 4 Posted April 14, 2011 Report Share Posted April 14, 2011 C não tem nenhum tipo de dados que permita guardar números dessa forma: http://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)#Tipos_de_dados Se tivesse bastar-te-ia fazer: if(num%11 == 0) é múltiplo else não é múltiplo Tens que fazer um algoritmo que te permita verificar se o número é múltiplo de 11 "à mão", ou seja, usando a representação do número em string e olhando para cada caracter. Não respondo a dúvidas por mensagem. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now