From 2cfe146e9d27878f2e770044b3b79ee845c0e787 Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Wed, 23 Mar 2016 14:46:33 +0300 Subject: [PATCH] difference_of_squares: iteration 1 --- .../difference_of_squares.h | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 cpp/difference-of-squares/difference_of_squares.h diff --git a/cpp/difference-of-squares/difference_of_squares.h b/cpp/difference-of-squares/difference_of_squares.h new file mode 100644 index 0000000..25c69e4 --- /dev/null +++ b/cpp/difference-of-squares/difference_of_squares.h @@ -0,0 +1,34 @@ +#pragma once + +#define EXERCISM_RUN_ALL_TESTS + + +namespace squares { + +namespace detail { + +constexpr unsigned sum(unsigned n) +{ + return (n*(n+1))/2; +} + +} + + +constexpr unsigned square_of_sums(unsigned n) +{ + using detail::sum; + return sum(n)*sum(n); +} + +constexpr unsigned sum_of_squares(unsigned n) +{ + return (n*(n+1)*(2*n+1))/6; +} + +constexpr unsigned difference(unsigned n) +{ + return square_of_sums(n) - sum_of_squares(n); +} + +}