¿Encuentra el número de fila y el número de columna donde 20096 ocurre en una matriz triangular?

Puede observar que la primera fila contiene todos los números triangulares, que tienen la forma n (n + 1) / 2 donde n es un número entero (y es el número de columna). También puede observar que todos los números entre dos números triangulares están en diagonal y terminan con el mayor de los dos números triangulares.

Entonces, lo que debe hacer primero es averiguar qué dos números triangulares en la primera fila están más cerca de 20096. Dado que n (n + 1) / 2 está cerca de (n ^ 2) / 2 y 20096 * 2 está cerca de 40,000, mi primera suposición sería calcular el número triangular para n = 200 y luego moverlo hacia la izquierda o hacia la derecha según sea necesario. Para n = 200, n (n + 1) / 2 = 20,100 y para n = 199, n (n + 1) / 2 = 19,900, por lo que resulta que n = 200 es la diagonal exacta que desea.

La diagonal que termina en la fila 1, columna 200, contiene los números del 19,901 al 20,100, por lo que su número 20,096 es cuatro filas a la izquierda y cuatro columnas hacia abajo desde allí.

La fila superior muestra la suma de n nos naturales donde n es el no. De la columna de la izquierda.
Para 20096, el no más cercano. que es la suma de n nos naturales es 20100, que es la suma de los primeros 200 nos naturales.
Por lo tanto, 20096 estará en la fila 200

(Suponiendo que la indexación comienza en 1.) El primer paso sería encontrar en qué diagonal 20096 está activada. Encuentre el número entero d tal que el número triangular d’th (d (d + 1) / 2) sea menor que 20096 y el número triangular th (d + 1) ((d + 1) (d + 2) / 2 ) no es menos. 20096 está en la diagonal (d + 1). Ahora para averiguar dónde en la diagonal. Calcule m = ((d + 1) (d + 2) / 2) -20096. Esto es qué tan lejos está de estar al final (arriba) de la diagonal. El final de la diagonal está en la columna (d + 1), por lo que 20096 será m columnas a la izquierda; el final de la diagonal está en la fila 1, por lo que 20096 estará m columnas hacia abajo.

More Interesting

¿Cuál es el mejor algoritmo para encontrar el camino con dos limitaciones?

Cómo hacer un proyecto de chatbot

Dada la secuencia creciente, en cada paso puede elegir 2 elementos consecutivos, reemplazarlos con su suma y no puede elegir el último elemento, ¿cuál es el número máximo de movimientos que puede hacer para que la secuencia siga aumentando?

¿Se puede usar el algoritmo DBSCAN para determinar los límites del área geográfica?

¿Cuál es el mejor algoritmo de aprendizaje automático sin supervisión para la segmentación de imágenes basada en color?

¿Cuál es el mejor libro sobre estructuras de datos y algoritmos en Java?

¿Por qué es importante el crossover en el algoritmo genético?

¿Cuáles son algunos buenos nombres de variables / métodos junto con la descripción donde encajan?

¿Cuál es el método computacionalmente más eficiente para agregar todos los elementos de una matriz (o matriz)?

¿Existen algoritmos que estructuran datos previamente no estructurados utilizando 'etiquetas' definidas por el usuario?

¿Cuál es el mejor sitio para aprender la estructura de datos y el algoritmo?

¿Cuáles son algunos algoritmos fáciles de implementar para la localización basada en características o puntos de referencia de robots móviles 2-D?

Rendimiento del software: ¿los algoritmos de cálculo se ejecutarán más rápido cuando se implementen en Node.js en lugar de C?

Cómo contar el número de n rutas de borde que comienzan desde el nodo u en un DAG (gráfico acíclico dirigido)

¿Cómo ayuda la selección de estructuras de datos apropiadas para diseñar mejores algoritmos?