Una soluzione senza cicli
Lezione 3 di 20 del corso Indovinelli matematici di Coddy.
La sfida precedente si risolve facilmente usando i cicli. Tuttavia, se N è grande, per esempio N=10**9, il tempo di esecuzione potrebbe essere lungo, molto lungo.
Se hai risolto la sfida precedente senza cicli, è fantastico e sei molto bravo, sia nella programmazione che in matematica. Se non ci sei riuscito, questa lezione fa per te.
Un altro modo consiste nel calcolare direttamente la somma di ogni progressione aritmetica.
Se conosci il primo termine, a1, l'ultimo termine, an, e il numero di termini, n, la somma è:
S = n * (a1+an)//2
Sfida
FacileUsa la formula della somma per calcolare la soluzione della sfida.
Scrivi una funzione calc che accetta in input un intero N e restituisce la somma dei multipli di 3 o 5 minori di N .
Ad esempio, per N=10, la funzione restituirà 23
Suggerimento: suddividi il codice in funzioni più piccole.
Provalo tu
#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;
}
Tutte le lezioni di Indovinelli matematici
Esercitati da solo: Compilatore C online