Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión

 
Búsqueda Avanzada

15.707 Mensajes en 3.130 Temas- por 371 Usuarios - Último usuario: lasfirrot
Mayo 18, 2012, 05:29:31
Foro de Hispabyte.netProgramaciónCompeticiones de programación y algorítmicaTema: Problema con 4808 Digits Count-Live Archive
Páginas: [1]   Ir Abajo
Imprimir
Autor Tema: Problema con 4808 Digits Count-Live Archive  (Leído 1507 veces)
0 Usuarios y 2 Visitantes están viendo este tema.
nachox
Novato
*
Mensajes: 18


Ver Perfil
« : Enero 01, 2011, 04:09:38 »


Hola, ¿existe alguna propiedad en la teoría de números para resolver este problema http://acmicpc-live-archive.uva.es/nuevoportal/data/problem.php?p=4808 ?
En línea
piltrafukka
Novato
*
Mensajes: 33


Ver Perfil
« Respuesta #1 : Enero 01, 2011, 10:53:11 »

Es muy fácil si tienes en cuenta que los rangos tipo 100->199, 2000->2999, etc son inmediatos de calcular. Sólo tienes que dividir el rango que te piden en subrangos así y se resuelve en un momento.

Puedes calcular previamente cuantas veces aparece cada dígito para rangos de tamaño 1, 10, 100, 1000, ..., 100000000. Y luego con eso precalculado hacer algo así.

Adjunto el código en ANSI C. Renombrar a 4808.c.

gcc -Wall -ansi 4808.c -o 4808

* 4808.txt (1.64 KB - descargado 112 veces.)
En línea
nachox
Novato
*
Mensajes: 18


Ver Perfil
« Respuesta #2 : Enero 19, 2011, 01:09:41 »

Gracias por la respuesta, tu código está muy interesante  Sonrisa.
En línea
Páginas: [1]   Ir Arriba
Imprimir
Foro de Hispabyte.netProgramaciónCompeticiones de programación y algorítmicaTema: Problema con 4808 Digits Count-Live Archive
Ir a:  


Tema diseñado por RJ-45 para Hispabyte.net basado en el
theme famouspadexx v.09 designed by Formado Comprido
Downloable here. My present to padexx.de