elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  multiplo de 11,100 digitos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: multiplo de 11,100 digitos  (Leído 3,539 veces)
mendez1415

Desconectado Desconectado

Mensajes: 2


Ver Perfil
multiplo de 11,100 digitos
« en: 21 Diciembre 2016, 18:17 pm »

Su trabajo es, dado un número positivo N, determinar si es un múltiplo de once.
Especificación de entrada
La entrada es un archivo tal que cada línea contiene un número positivo. Una línea que contiene el número 0 es el final de la entrada. Los números dados pueden contener hasta 1000 dígitos.
Especificación de salida
La salida del programa indicará, para cada número de entrada, si es un múltiplo de once o no.

He buscado y buscado información, pero no encuentro como leer un numero de hasta mil digitos, espero que alguien pueda ayudarme, gracias.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #1 en: 21 Diciembre 2016, 18:50 pm »

tienes 2 caminos, usar matemática de precisión arbitraria o usar matemáticas... si es un trabajo de la uni, dudo que te permitan usar la primera opción...

para la primera un post que hice alguna vez, te puede ayudar, con esta librería pude calcular pi a 11mil digitos, pero puede servir para cualquier cosa

https://foro.elhacker.net/programacion_cc/calculo_de_pi_en_alta_precision_aporte-t412338.0.html

usando matemáticas, es hacer una algoritmo tal que puedas procesar el numero sin cargarlo...

es decir, por ejemplo...

tienes 9922121546975235412361002225 que en C/C++ no lo vas a poder cargar porque tiene más de 64 bits... para saber si un numero es multiplo, lo que haces es divirdirlo... te explico un poco como se hace la división para que veas que lo puedes hacer sin cargar el numero completo, esto debes ya haberlo estudidado antes en la primaria, pero como no se si lo conoces, igual lo desgloso paso a paso...

como el resultado final (cociente) no nos importa, sino solo el resto, no lo arrastraremos


9922121546975235412361002225 / 11

Código:
set:
dividendo = 0
resto = 0
divisor = 11
resultado = 0
---
paso 0: tomas el primer numero, si es menor que el divisor tomas uno más y repites hasta tener mayor que el divisor
---
paso 1: divides como enteros,  sacas el resto y lo guardas
---
paso 2: multiplicas el resultado actual por el divisor y se lo restas al dividendo, luego tomas el siguiente digito del numero a dividir, multiplicas el dividendo resultante por 10 y le sumas el valor extraido, si el numero obtenido es menor que el divisor, multiplicas el resultado por 10, multiplicas el dividendo por 10 y repites este paso
---
paso 3:
repetir desde el paso 1 y hasta agotar los digitos, si el resto es diferente de 0, entonces no es divisible

y como sería

Código:
set:
char* procesar = 9922121546975235412361002225
entero dividendo = 0
entero resto = 0
entero divisor = 11
entero resultado = 0


paso 0:
dividendo = 9
procesar = 922121546975235412361002225
dividendo < dividor? si
dividendo = 99
procesar = 22121546975235412361002225

paso 1:
resto = dividendo % divisor ->0
resultado = dividendo / divisor ->9

paso 2:
dividendo = dividendo - resultado * divisor ->0
dividendo = dividendo * 10 + 2 -> 2
procesar = 2121546975235412361002225
dividendo < divisor? si
dividendo = dividendo * 10 + 2 -> 22
procesar = 121546975235412361002225

paso 3
procesar contiene numeros? si
ir al paso 1

....... varias operaciones despues

paso 3
procesar contiene numeros? no
resto = 1
resto == 0? no
imprimir "no es multiplo"



« Última modificación: 21 Diciembre 2016, 18:52 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #2 en: 23 Diciembre 2016, 17:13 pm »

A ver, matemáticas básicas de primaria. Un número es múltiplo de 11 si, empezando a contar por la cifra menos significativa, la diferencia entre la suma de las cifras que ocupan una posición impar y la suma de los que ocupan posiciones pares es un múltiplo de 11 (algebraicamente se demuestra con congruencias, pero no hace falta tanto detalle).

Por ejemplo:
  1903
   Cifras en posiciones impares: 3 y 9 que suman 12
   Cifras en posiciones pares: 0 y 1 que suman 1
   Diferencia de las sumas: 11 que es múltiplo de 11 y por lo tanto 1903 es múltiplo de 11.

En la práctica te da lo mismo empezar por las posiciones pares o impares, ya que si x es múltiplo de 11, -x también lo es, así que lo único que tendrás que hacer es ir sumando y restando las cifras según las vayas leyendo y comprobar si el resultado final es múltiplo de 11.

Por si hay alguna duda, cero es múltiplo de cualquier número 0 = 0 · x, así que si la diferencia es cero también será múltiplo de 11 (por ejemplo 132).
« Última modificación: 23 Diciembre 2016, 17:22 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #3 en: 23 Diciembre 2016, 17:43 pm »

desconocía esta teoría, pero si parece solida y probando me da bien...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Naimaderis

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #4 en: 23 Diciembre 2016, 22:20 pm »

Si ese numero modulo 11 da 0, es multiplo de 11, por ejemplo 110%11 = 0, entonces 110 es multiplo de 11.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #5 en: 23 Diciembre 2016, 22:22 pm »

Si ese numero modulo 11 da 0, es multiplo de 11, por ejemplo 110%11 = 0, entonces 110 es multiplo de 11.

es una explicación (diciendo lo mismo que do-while) o una pregunta?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Naimaderis

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #6 en: 23 Diciembre 2016, 22:55 pm »

es una explicación (diciendo lo mismo que do-while) o una pregunta?
Pido disculpas por eso, no vi que habia respuestas. Generalmente, veo el tema principal, y si puedo ayudar a resolverlo, respondo directamente. De ahora en adelante lo tendré en cuenta, para evitar redundancias. Ademas, su respuesta fue mejor que la mia.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: multiplo de 11,100 digitos
« Respuesta #7 en: 23 Diciembre 2016, 23:00 pm »

por un lado tu respuesta de ninguna manera resolvería el problema, ya que primero necesitaría carga una variable de tipo numerico de 1000 digitos de largo antes de hacer modulo

por otro lado, es de mala educación para los que respondieron y es un comportamiento totalmente inapropiado para un foro que entes y des una respuesta sin leer los comentarios... esto ultimo que quede en claro! ya que hace perder tiempo a los demás y popula el foro de contenido redundante y sobrante sin necesidad
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
maximo comun divisor y minimo comun multiplo
Programación C/C++
7hongo7 3 7,796 Último mensaje 15 Marzo 2013, 21:11 pm
por alt_369
timestamp de 10 dígitos... « 1 2 »
Bases de Datos
dimitrix 10 6,499 Último mensaje 23 Enero 2015, 17:45 pm
por dimitrix
help! función que permita aprox un número a su múltiplo de 6 inmediato en python
Scripting
darkweb64 6 2,945 Último mensaje 6 Febrero 2015, 18:11 pm
por darkweb64
Multiplo de
Programación C/C++
Erecc 2 1,336 Último mensaje 1 Noviembre 2015, 00:44 am
por Erecc
minimo comun multiplo
Programación C/C++
emily.mp 3 2,307 Último mensaje 24 Agosto 2017, 19:27 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines