Red de conocimiento informático - Problemas con los teléfonos móviles - Programación VB: Encuentra los 10 números posibles cuya suma sea 100 entre los números enteros del 1 al 50

Programación VB: Encuentra los 10 números posibles cuya suma sea 100 entre los números enteros del 1 al 50

Se ha modificado de la siguiente manera:

El ejemplo dado por el cartel original tiene 33389 grupos.

El siguiente es el procedimiento general:

Opción Explícita

Dim N As Long, Y As Long, X As Long

Dim I como entero, J como entero

Dim M() como largo

Dim St como cadena

Dim H() como doble, Hj como doble

Private Sub Form_Load()

Form1.AutoRedraw = True

Do

St = InputBox("Ingrese el rango de búsqueda (N) ", "Entrada", 50)

Bucle hasta Pan(St)

N = Val(St)

Do

St = InputBox ("Ingrese la suma (Y)", "Enter", 100)

Bucle hasta Pan(St)

Y = Val(St)

Do

St = InputBox("El número de números de suma es", "input", 10)

Bucle hasta Pan(St)

X = Val(St)

ReDim M(X), H(X)

Para I = 0 a X

M(I) = I:H ( I) = 0

Siguiente

Hj = 0

I = 1

abre "d:\result.txt" para salida como #1

Llame a ZuHe

Imprimir #1, "Completo. El total es: "; >Imprimir "Completado. El número total es:"; Hj

Imprimir "Todos los resultados se han escrito en el archivo D:\results.txt2 en el directorio raíz de la unidad D"

End Sub

Función Pan(A como cadena) como booleana

Dim L como entero, I como entero

L = Len(A)

Si L lt; gt; 0 Entonces

Para I = 1 a L

Si Asc(Mid(A, I, 1)) lt; Mid(A, I, 1)) gt; 57 Entonces

Pan = False

Salir para

Else

Pan = True

Finalizar si

Siguiente

Else

Pan = False

Finalizar si

Función final

Sub ZuHe()

Hacer mientras M(I) lt;= N - X I

H(I) = H(I - 1 ) M(I)

Si I = X Entonces

Si H(I) = Y Entonces

Hj = Hj 1

Imprimir

#1, Hj;

Para J = 1 a X

Imprimir #1, M(J

Siguiente

Imprimir; #1, vbCrLf

End If

ElseIf H(I) lt; Y Then

I = I 1

M(I ) = M(I - 1) 1

Llamar a ZuHe

I = I - 1

Finalizar si

M(I) = M(I) 1

DoEvents

Bucle

End Sub

'Ya se está ejecutando.