Menu
Coddy logo textTech

A solution with no loops

Lição 3 de 20 do curso Enigmas Matemáticos da Coddy.

O desafio anterior é facilmente resolvido usando loops. No entanto, se N for grande - por exemplo N=10**9 - o tempo de execução pode ser longo, muito longo.

Se você resolveu o desafio anterior sem loops - isso é ótimo, e você é muito bom, tanto em programação quanto em matemática. Se não resolveu, esta lição é para você.

Outra maneira é calcular diretamente a soma de cada progressão aritmética.

Se você conhece o primeiro termo, a1, o último termo, an, e o número de termos, n, a soma é:

S = n * (a1+an)//2

challenge icon

Desafio

Fácil

Use a fórmula da soma para calcular a solução para o desafio.

Escreva uma função calc que recebe um número inteiro N como entrada e retorna a soma de todos os múltiplos de 3 ou 5 abaixo de N.

Por exemplo, para N=10 a função retornará 23

Dica - Separe seu código em funções menores.

Experimente você mesmo

#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;
}

Todas as lições de Enigmas Matemáticos

2Multiples of 3 or 5

A problemA solution with no loops

5Diophantine Equation

IntroductionA problem