A solution with no loops
Урок 3 из 20 курса Математические головоломки на Coddy.
Предыдущая задача легко решается с помощью циклов. Однако, если N велико — например, N=10**9 — время выполнения может быть долгим, очень долгим.
Если вы решили предыдущую задачу без циклов — это отлично, и вы очень хороши как в программировании, так и в математике. Если нет, то этот урок для вас.
Другой способ — это прямое вычисление суммы каждой арифметической прогрессии.
Если вы знаете первый член, a1, последний член, an, и количество членов, n, сумма равна:
S = n * (a1+an)//2
Задание
ЛегкоИспользуйте формулу суммы для вычисления решения задачи.
Напишите функцию 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;
}