SlideShare una empresa de Scribd logo
1 de 17
Factorial Again!
ACM ICPC 2013 – Latin
American Regional
Víctor Aravena, Mónica Díaz,
Bastian Barrientos
Universidad de la Frontera
Descripción de Problema
•

Mathew, un estudiante de primer año de ingeniería, está
desarrollando una notación posicional original para representar
números enteros. Lo llamó  Un método Curious "(ACM por sus
siglas). La notación ACM utiliza los mismos números que la
notación decimal, es decir, del 0 al 9. Para convertir un número A
de ACM a la notación decimal debe agregar términos k, donde k es
el número de dígitos de A (en la notación ACM). El valor del i-th
término, correspondiente al i-th ai dígitos, contando de derecha a
izquierda, es ai * i!. Por ejemplo 719 es equivalente a 5310, desde
el 7 * 3! + 1 * 2! + 9 * 1! = 5310. Mathew acaba de comenzar el
estudio de la teoría de números, y probablemente no sabe qué
propiedades de un sistema de numeración debe tener, pero por el
momento sólo está interesado en conversión de un número de ACM
a decimal. ¿Puedes ayudarle?
ACM
Especificación de entrada
• Cada caso de prueba se administra en
una sola línea que contiene una cadena
no vacía de un máximo de 5 dígitos, lo
que representa un número en notación
ACM. La cadena no tiene ceros a la
izquierda. El último caso de prueba es
seguida por una línea que contiene un
cero.
Especificación de salida
• Para cada caso de prueba emitir una sola
línea que contiene la representación
decimal del número correspondiente de
ACM.
Ejemplos
• Entrada

• Salida

719
1
15
110
102
0

53
1
7
8
8
Formula de un factorial (n!)
Importante un factorial de n se define como
la multiplicación acumulada de valores
consecutivos desde 1 al número N. Es
decir
n!= 1 x 2 x 3 x 4 x …x (n-1) x n.
Por ejemplo.
El factorial de 5 seria 1 x 2 x 3 x 4 x 5 = 120
Desarrollo del Problema
• Analizando nuestro problema, si el número
ingresado es 719 el número resultante se
calcula de la siguiente forma:
7(tercera posición) + 1 (segunda posición) + 9 (primera posición)
7x3! + 1x2! + 9x1!
7x(3x2x1) + 1x(2x1) + 9 x(1)
7x(6) + 1x(2) + 9x(1)
42 + 2 + 9
Salida 53.
Desarrollo del Problema
• Algoritmo
– Paso 1 => preguntamos el número y asignamos el número
– Paso 2 => Si el número es cero finalizo
– Paso 3 => Si es distinto a cero
• Paso 3.1 => calculo el largo del número
• Paso 3.2 => Itero desde el primer elemento hasta el
ultimo
–
–
–
–

3.2.1 Tomo el valor de la posición
3.2.2 Convierto a entero
3.2.3 Lo multiplico con el factorial (largo – posición)
3.2.4 Lo incorporo a una variable que contiene la suma

• Paso 3.3 => Entrego el resultado
• Paso 3.4 => Vuelvo al primer paso 1.
Estructura de Código
• Es importante recordar la estructura de los códigos
– Paso 1 => declarar las librerías y espacio de trabajo
– Paso 2 => construir las funciones, en este caso una función
que calcula el factorial
– Paso 3 => Iniciar el método principal (int main)
– Paso 4 => Declarar e iniciar las variables a utilizar
– Paso 5 => Realizar la captura de los datos
– Paso 6 => Procesar
– Paso 7 => Entregar información
Estructura de Código
– Paso 1 => declarar las librerías y espacio de trabajo
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<cstdlib>
#include<string.h>
using namespace std;
Estructura de Código
– Paso 2 => construir las funciones, en este caso una función
que calcula el factorial
int factorial(int N){
int multiplicacion = 1;
for(int contador = 1;contador <=N;contador++){
multiplicacion = multiplicacion * contador;
}
return multiplicacion;
}
Estructura de Código
– Paso 3 => Iniciar el método principal (int main)
int main(){
……
}
– Paso 4 => Declarar e iniciar las variables a utilizar
char a[100];
int limite, posicionFactorial, suma;
Estructura de Código
– Paso 5 => Realizar la captura de los datos
cin.getline(a, 100, 'n');
– Paso 6 => Procesar
cin.getline(a, 100, 'n');
string largo = ""+string(a);
limite = largo.length();
posicionFactorial = limite;
suma = 0;
for(int i=0;i<limite;i++){
suma = suma + (a[i]-'0')*factorial(posicionFactorial);
posicionFactorial = posicionFactorial - 1;
}
Estructura de Código
– Paso 7 => Entregar información
printf("%dn", suma);
– Paso adicional => Generamos un proceso do-while para
validar si el número a procesar es distinto de cero
do{
….
}while(atoi(a)!=0);
Código
Estructura de Código
– Para verificar el entendimiento del problema vamos a
solicitar unas pequeñas modificaciones al código. Favor
tratar de sacar cada uno de los puntos en un nuevo código
(archivo .cpp):
• Invertir la forma de obtener el factorial, es decir:
– 719 sería 7x factorial 1 + 1 factorial de 2 + 9 factorial
de 3
• En vez de sumar poder restar, es decir
– 719 sería 7x factorial 3 + 1 factorial de 2 + 9 factorial
de 1
Autores

Más contenido relacionado

La actualidad más candente

Operaciones Básicas en Z
Operaciones Básicas en ZOperaciones Básicas en Z
Operaciones Básicas en ZElia Anez
 
Cap5 1.2 tutor2 algoritmos secuenciales
Cap5 1.2 tutor2 algoritmos secuencialesCap5 1.2 tutor2 algoritmos secuenciales
Cap5 1.2 tutor2 algoritmos secuencialesMary Dunnia Lopez N.
 
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primaria
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primariaFicha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primaria
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primariaNino Medina
 
Lab Sistemas Distribuidos y Paralelos Actividad 4
Lab Sistemas Distribuidos y Paralelos Actividad 4Lab Sistemas Distribuidos y Paralelos Actividad 4
Lab Sistemas Distribuidos y Paralelos Actividad 4Richi Garza
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Evelyn Anayansi
 
Guia logica (1)
Guia logica (1)Guia logica (1)
Guia logica (1)zeta2015
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con javadiegocastro1234
 
Ejercicios Propuestos
Ejercicios PropuestosEjercicios Propuestos
Ejercicios PropuestosElia Anez
 
Prepractica1 Control Automático
Prepractica1 Control AutomáticoPrepractica1 Control Automático
Prepractica1 Control AutomáticoRick Cevallos
 
Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestosElia Anez
 
Asesoria MetodologíA Y TecnologíA De La ProgramacióN I
Asesoria MetodologíA Y TecnologíA De La ProgramacióN IAsesoria MetodologíA Y TecnologíA De La ProgramacióN I
Asesoria MetodologíA Y TecnologíA De La ProgramacióN IDanilo Jaramillo
 
Operaciones con Números Complejos
Operaciones con Números ComplejosOperaciones con Números Complejos
Operaciones con Números ComplejosAngel Carreras
 

La actualidad más candente (18)

arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Operaciones Básicas en Z
Operaciones Básicas en ZOperaciones Básicas en Z
Operaciones Básicas en Z
 
Graficas
GraficasGraficas
Graficas
 
Graficas
GraficasGraficas
Graficas
 
Cap5 1.2 tutor2 algoritmos secuenciales
Cap5 1.2 tutor2 algoritmos secuencialesCap5 1.2 tutor2 algoritmos secuenciales
Cap5 1.2 tutor2 algoritmos secuenciales
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primaria
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primariaFicha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primaria
Ficha suma-y-resta-de-fracciones-homogeneas-para-tercero-de-primaria
 
Lab Sistemas Distribuidos y Paralelos Actividad 4
Lab Sistemas Distribuidos y Paralelos Actividad 4Lab Sistemas Distribuidos y Paralelos Actividad 4
Lab Sistemas Distribuidos y Paralelos Actividad 4
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
 
Guia logica (1)
Guia logica (1)Guia logica (1)
Guia logica (1)
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
1 matrices
1 matrices1 matrices
1 matrices
 
Ejercicios Propuestos
Ejercicios PropuestosEjercicios Propuestos
Ejercicios Propuestos
 
Prepractica1 Control Automático
Prepractica1 Control AutomáticoPrepractica1 Control Automático
Prepractica1 Control Automático
 
Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestos
 
Nombre.docx gbv
Nombre.docx gbvNombre.docx gbv
Nombre.docx gbv
 
Asesoria MetodologíA Y TecnologíA De La ProgramacióN I
Asesoria MetodologíA Y TecnologíA De La ProgramacióN IAsesoria MetodologíA Y TecnologíA De La ProgramacióN I
Asesoria MetodologíA Y TecnologíA De La ProgramacióN I
 
Operaciones con Números Complejos
Operaciones con Números ComplejosOperaciones con Números Complejos
Operaciones con Números Complejos
 

Destacado

El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-Profesional
El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-ProfesionalEl IEEE Como Herramienta de Apoyo y Desarrollo Técnico-Profesional
El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-ProfesionalPablo F. Sanchez
 
Recomendaciones de ACM e IEEE para carreras de Computación e Informática
Recomendaciones de ACM e IEEE para carreras de Computación e InformáticaRecomendaciones de ACM e IEEE para carreras de Computación e Informática
Recomendaciones de ACM e IEEE para carreras de Computación e InformáticaXavier Ochoa
 
FORMATO IEEE
FORMATO IEEEFORMATO IEEE
FORMATO IEEEdie_dex
 

Destacado (6)

El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-Profesional
El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-ProfesionalEl IEEE Como Herramienta de Apoyo y Desarrollo Técnico-Profesional
El IEEE Como Herramienta de Apoyo y Desarrollo Técnico-Profesional
 
Que es IEEE?
Que es IEEE?Que es IEEE?
Que es IEEE?
 
Recomendaciones de ACM e IEEE para carreras de Computación e Informática
Recomendaciones de ACM e IEEE para carreras de Computación e InformáticaRecomendaciones de ACM e IEEE para carreras de Computación e Informática
Recomendaciones de ACM e IEEE para carreras de Computación e Informática
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
FORMATO IEEE
FORMATO IEEEFORMATO IEEE
FORMATO IEEE
 
NORMA 830
NORMA 830NORMA 830
NORMA 830
 

Similar a Factorial again! Olimpiada Informática Media IOI- ACM

LinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptLinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptjlmansilla
 
Software e.e docx
Software e.e docxSoftware e.e docx
Software e.e docxAreli1215
 
Examen primera evaluacion_iii_2009_2010_solucion
Examen primera evaluacion_iii_2009_2010_solucionExamen primera evaluacion_iii_2009_2010_solucion
Examen primera evaluacion_iii_2009_2010_solucionJosé Díaz Pilpe
 
Algoritmos computacionales y programación: 4
Algoritmos computacionales y programación: 4Algoritmos computacionales y programación: 4
Algoritmos computacionales y programación: 4Universidad Veracruzana
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a MatlabAdiel Castaño
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos DirectosKike Prieto
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaupRyoga Luis
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacionJLAntonio
 
Conversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónConversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónJohnny Montenegro Molina
 
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffLuLopez7
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)José Antonio Sandoval Acosta
 
VectoresMatricesI.ppt
VectoresMatricesI.pptVectoresMatricesI.ppt
VectoresMatricesI.pptjonhMCH
 

Similar a Factorial again! Olimpiada Informática Media IOI- ACM (20)

LinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptLinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.ppt
 
Programas
Programas Programas
Programas
 
Software e.e docx
Software e.e docxSoftware e.e docx
Software e.e docx
 
Examen primera evaluacion_iii_2009_2010_solucion
Examen primera evaluacion_iii_2009_2010_solucionExamen primera evaluacion_iii_2009_2010_solucion
Examen primera evaluacion_iii_2009_2010_solucion
 
Proyecto
ProyectoProyecto
Proyecto
 
Algoritmos computacionales y programación: 4
Algoritmos computacionales y programación: 4Algoritmos computacionales y programación: 4
Algoritmos computacionales y programación: 4
 
Introducción a Matlab
Introducción a MatlabIntroducción a Matlab
Introducción a Matlab
 
Métodos Directos
Métodos DirectosMétodos Directos
Métodos Directos
 
Omega Up
Omega UpOmega Up
Omega Up
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaup
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaup
 
Módulo 3
Módulo 3Módulo 3
Módulo 3
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
Conversiones entre sistemas de numeración
Conversiones entre sistemas de numeraciónConversiones entre sistemas de numeración
Conversiones entre sistemas de numeración
 
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
bhguhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
 
CLASE 01.pdf
CLASE 01.pdfCLASE 01.pdf
CLASE 01.pdf
 
Programación 1: arreglos en C
Programación 1: arreglos en CProgramación 1: arreglos en C
Programación 1: arreglos en C
 
CLASE 04.pdf
CLASE 04.pdfCLASE 04.pdf
CLASE 04.pdf
 
VectoresMatricesI.ppt
VectoresMatricesI.pptVectoresMatricesI.ppt
VectoresMatricesI.ppt
 

Más de Victor Aravena

Personajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalPersonajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalVictor Aravena
 
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Victor Aravena
 
Taller generación codigopersistenciaderby-netbeans
Taller generación codigopersistenciaderby-netbeansTaller generación codigopersistenciaderby-netbeans
Taller generación codigopersistenciaderby-netbeansVictor Aravena
 
Introdución Typo3 6.2
Introdución Typo3 6.2Introdución Typo3 6.2
Introdución Typo3 6.2Victor Aravena
 
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Victor Aravena
 
Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Victor Aravena
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducciónVictor Aravena
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparoVictor Aravena
 
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGameVictor Aravena
 
4. elementos apoyotaller-tutorialguiabasica 2014
4.  elementos apoyotaller-tutorialguiabasica 20144.  elementos apoyotaller-tutorialguiabasica 2014
4. elementos apoyotaller-tutorialguiabasica 2014Victor Aravena
 
3. tutorialguiabasico 2014
3.  tutorialguiabasico 20143.  tutorialguiabasico 2014
3. tutorialguiabasico 2014Victor Aravena
 
2. principales elementos
2.  principales elementos2.  principales elementos
2. principales elementosVictor Aravena
 
1. instalaciondeconstruct2 2014
1.  instalaciondeconstruct2 20141.  instalaciondeconstruct2 2014
1. instalaciondeconstruct2 2014Victor Aravena
 
5. taller tutorial-guiabasica 2014
5.  taller tutorial-guiabasica 20145.  taller tutorial-guiabasica 2014
5. taller tutorial-guiabasica 2014Victor Aravena
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducciónVictor Aravena
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparoVictor Aravena
 
Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Victor Aravena
 
Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Victor Aravena
 
Formulario de implementación de componentes de software transaccional de amb...
Formulario de implementación de  componentes de software transaccional de amb...Formulario de implementación de  componentes de software transaccional de amb...
Formulario de implementación de componentes de software transaccional de amb...Victor Aravena
 

Más de Victor Aravena (20)

Personajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalPersonajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipal
 
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
 
Taller generación codigopersistenciaderby-netbeans
Taller generación codigopersistenciaderby-netbeansTaller generación codigopersistenciaderby-netbeans
Taller generación codigopersistenciaderby-netbeans
 
Introdución Typo3 6.2
Introdución Typo3 6.2Introdución Typo3 6.2
Introdución Typo3 6.2
 
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
 
Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducción
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparo
 
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
 
4. elementos apoyotaller-tutorialguiabasica 2014
4.  elementos apoyotaller-tutorialguiabasica 20144.  elementos apoyotaller-tutorialguiabasica 2014
4. elementos apoyotaller-tutorialguiabasica 2014
 
3. tutorialguiabasico 2014
3.  tutorialguiabasico 20143.  tutorialguiabasico 2014
3. tutorialguiabasico 2014
 
2. principales elementos
2.  principales elementos2.  principales elementos
2. principales elementos
 
1. instalaciondeconstruct2 2014
1.  instalaciondeconstruct2 20141.  instalaciondeconstruct2 2014
1. instalaciondeconstruct2 2014
 
5. taller tutorial-guiabasica 2014
5.  taller tutorial-guiabasica 20145.  taller tutorial-guiabasica 2014
5. taller tutorial-guiabasica 2014
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducción
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparo
 
Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013
 
Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Curso veranovideojuegos 2014
Curso veranovideojuegos 2014
 
Formulario de implementación de componentes de software transaccional de amb...
Formulario de implementación de  componentes de software transaccional de amb...Formulario de implementación de  componentes de software transaccional de amb...
Formulario de implementación de componentes de software transaccional de amb...
 
Encuentro linux 2013
Encuentro linux 2013Encuentro linux 2013
Encuentro linux 2013
 

Factorial again! Olimpiada Informática Media IOI- ACM

  • 1. Factorial Again! ACM ICPC 2013 – Latin American Regional Víctor Aravena, Mónica Díaz, Bastian Barrientos Universidad de la Frontera
  • 2. Descripción de Problema • Mathew, un estudiante de primer año de ingeniería, está desarrollando una notación posicional original para representar números enteros. Lo llamó Un método Curious "(ACM por sus siglas). La notación ACM utiliza los mismos números que la notación decimal, es decir, del 0 al 9. Para convertir un número A de ACM a la notación decimal debe agregar términos k, donde k es el número de dígitos de A (en la notación ACM). El valor del i-th término, correspondiente al i-th ai dígitos, contando de derecha a izquierda, es ai * i!. Por ejemplo 719 es equivalente a 5310, desde el 7 * 3! + 1 * 2! + 9 * 1! = 5310. Mathew acaba de comenzar el estudio de la teoría de números, y probablemente no sabe qué propiedades de un sistema de numeración debe tener, pero por el momento sólo está interesado en conversión de un número de ACM a decimal. ¿Puedes ayudarle? ACM
  • 3. Especificación de entrada • Cada caso de prueba se administra en una sola línea que contiene una cadena no vacía de un máximo de 5 dígitos, lo que representa un número en notación ACM. La cadena no tiene ceros a la izquierda. El último caso de prueba es seguida por una línea que contiene un cero.
  • 4. Especificación de salida • Para cada caso de prueba emitir una sola línea que contiene la representación decimal del número correspondiente de ACM.
  • 6. Formula de un factorial (n!) Importante un factorial de n se define como la multiplicación acumulada de valores consecutivos desde 1 al número N. Es decir n!= 1 x 2 x 3 x 4 x …x (n-1) x n. Por ejemplo. El factorial de 5 seria 1 x 2 x 3 x 4 x 5 = 120
  • 7. Desarrollo del Problema • Analizando nuestro problema, si el número ingresado es 719 el número resultante se calcula de la siguiente forma: 7(tercera posición) + 1 (segunda posición) + 9 (primera posición) 7x3! + 1x2! + 9x1! 7x(3x2x1) + 1x(2x1) + 9 x(1) 7x(6) + 1x(2) + 9x(1) 42 + 2 + 9 Salida 53.
  • 8. Desarrollo del Problema • Algoritmo – Paso 1 => preguntamos el número y asignamos el número – Paso 2 => Si el número es cero finalizo – Paso 3 => Si es distinto a cero • Paso 3.1 => calculo el largo del número • Paso 3.2 => Itero desde el primer elemento hasta el ultimo – – – – 3.2.1 Tomo el valor de la posición 3.2.2 Convierto a entero 3.2.3 Lo multiplico con el factorial (largo – posición) 3.2.4 Lo incorporo a una variable que contiene la suma • Paso 3.3 => Entrego el resultado • Paso 3.4 => Vuelvo al primer paso 1.
  • 9. Estructura de Código • Es importante recordar la estructura de los códigos – Paso 1 => declarar las librerías y espacio de trabajo – Paso 2 => construir las funciones, en este caso una función que calcula el factorial – Paso 3 => Iniciar el método principal (int main) – Paso 4 => Declarar e iniciar las variables a utilizar – Paso 5 => Realizar la captura de los datos – Paso 6 => Procesar – Paso 7 => Entregar información
  • 10. Estructura de Código – Paso 1 => declarar las librerías y espacio de trabajo #include<iostream> #include<stdio.h> #include<conio.h> #include<cstdlib> #include<string.h> using namespace std;
  • 11. Estructura de Código – Paso 2 => construir las funciones, en este caso una función que calcula el factorial int factorial(int N){ int multiplicacion = 1; for(int contador = 1;contador <=N;contador++){ multiplicacion = multiplicacion * contador; } return multiplicacion; }
  • 12. Estructura de Código – Paso 3 => Iniciar el método principal (int main) int main(){ …… } – Paso 4 => Declarar e iniciar las variables a utilizar char a[100]; int limite, posicionFactorial, suma;
  • 13. Estructura de Código – Paso 5 => Realizar la captura de los datos cin.getline(a, 100, 'n'); – Paso 6 => Procesar cin.getline(a, 100, 'n'); string largo = ""+string(a); limite = largo.length(); posicionFactorial = limite; suma = 0; for(int i=0;i<limite;i++){ suma = suma + (a[i]-'0')*factorial(posicionFactorial); posicionFactorial = posicionFactorial - 1; }
  • 14. Estructura de Código – Paso 7 => Entregar información printf("%dn", suma); – Paso adicional => Generamos un proceso do-while para validar si el número a procesar es distinto de cero do{ …. }while(atoi(a)!=0);
  • 16. Estructura de Código – Para verificar el entendimiento del problema vamos a solicitar unas pequeñas modificaciones al código. Favor tratar de sacar cada uno de los puntos en un nuevo código (archivo .cpp): • Invertir la forma de obtener el factorial, es decir: – 719 sería 7x factorial 1 + 1 factorial de 2 + 9 factorial de 3 • En vez de sumar poder restar, es decir – 719 sería 7x factorial 3 + 1 factorial de 2 + 9 factorial de 1