A solution with no loops
Lección 3 de 20 del curso Acertijos matemáticos de Coddy.
El desafío anterior se resuelve fácilmente usando bucles. Sin embargo, si N es grande (por ejemplo, N=10**9), el tiempo de ejecución podría ser largo, muy largo.
Si resolviste el desafío anterior sin bucles, es genial, y eres muy bueno, tanto en programación como en matemáticas. Si no lo hiciste, esta lección es para ti.
Otra forma es calcular directamente la suma de cada progresión aritmética.
Si conoces el primer término, a1, el último término, an, y el número de términos, n, la suma es:
S = n * (a1+an)//2
Desafío
FácilUsa la fórmula de la suma para calcular la solución del desafío.
Escribe una función calc que reciba un entero N como entrada y devuelva la suma de los múltiplos de 3 o 5 menores que N .
Por ejemplo, para N=10 la función devolverá 23
Consejo - Separa tu código en funciones más pequeñas.
Pruébalo tú mismo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"
int main() {
int n;
if (scanf("%d", &n) != 1) n = 0;
int r = calc(n);
printf("%d\n", r);
return 0;
}