Aqui mi respuesta en pseudocodigo:
en VB quedaría asi:
Para llegar a este resultado aqui mis deducciones:
Primero veamos cuanto suman los numeros del 1 al n.
seria:
1+2+3+4+5+6+......+(n-4)+(n+3)+(n-2)+(n-1)+n
Si observamos podemos eliminar el -1 de la parte derecha con el 1 de la parte izquierda, quedando:
2+3+4+5+6+.....+(n-4)+(n+3)+(n-2)+n+n
Lo mismo con el -2 y el 2 quedando:
3+4+5+6+.....+(n-4)+(n+3)+n+n+n
Y asi continuamos, hasta llegar al punto n/2
y quedandonos un total de n+1 veces n, por lo que la formula queda:
Sum 1..n= n/2*(n+1) = n(n+1)/2
....
Ahora veamos una de las series que se desea eliminar, tomemos el que inicia en 3 y que se elimina cada 5 veces.
Llamemosle i al inicio y S el Salto de numeros, la serie seria:
serie i=3, S=5
3,8,13,18... etc
esto es:
3 + 8 + 13 + 18 + .... hasta <=n
3 + (5*1+3) + (5*2+3) + (5*3+3) + .... hasta <=n
Asi, substituyendo las literales:
i + (S*1+i) + (S*2+i) + (S*3+i) +....+ (S*N+i) donde N es el numero de elementos que hay desde i hasta n, y esta dada por:
N = int(n/S)-1
Vemos entonces que i se repite N+1 veces por lo tanto:
(S*1) + (S*2) + (S*3) + .... + (S*N) + i(N+1)
factorizando S:
S(1+2+3+...+N) + i(N+1)
esto es, utilizando nustra formula de 1+2+3+...N nos queda:
S(N(N+1)/2)+i(N+1)
factorizando (N+1) nos queda la formula:
Sum i,S,N = (SN/2+i)(N+1)
Volviendo a nuestro problema inicial,
n=1800
i1=1, i2=3, i3=4
S=S1=S2=S3=5
N=N1=N2=N3=int(n/s)-1=int(1800/5)-1=360-1=359
Sum = (n)(n+1)/2-(SN/2+i1)(N+1)-(SN/2+i2)(N+1)-(SN/2+i3)*(N+1)
Factorizando (N+1) queda:
Sum = n(n+1)/2-[(SN/2+i1+SN/2+i2+SN/2+i3)(N+1)]
Por lo tanto:
Sum = n(n+1)/2-(3SN/2+i1+i2+i3)(N+1)
Asi, con una sola fórmula podemos obtener el resultado, y es el algoritmo mas simple que puedes presentar...
Saludos.
Horroroso.