Menu
Coddy logo textTech

A solution with no loops

Урок 3 из 20 курса Математические головоломки на Coddy.

Предыдущая задача легко решается с помощью циклов. Однако, если N велико — например, N=10**9 — время выполнения может быть долгим, очень долгим.

Если вы решили предыдущую задачу без циклов — это отлично, и вы очень хороши как в программировании, так и в математике. Если нет, то этот урок для вас.

Другой способ — это прямое вычисление суммы каждой арифметической прогрессии.

Если вы знаете первый член, a1, последний член, an, и количество членов, n, сумма равна:

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

challenge icon

Задание

Легко

Используйте формулу суммы для вычисления решения задачи.

Напишите функцию calc, которая принимает целое число N в качестве входных данных и возвращает сумму всех чисел, кратных 3 или 5, которые меньше N.

Например, для N=10 функция вернет 23

Совет — разделите ваш код на более мелкие функции.

Попробуйте сами

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

Все уроки раздела Математические головоломки

2Multiples of 3 or 5

A problemA solution with no loops

5Diophantine Equation

IntroductionA problem