p0006_s0.c
problem 6 · 13 lines
/* Solution to Euler Problem 6: Sum Square Difference. */
#include "runner.h"
const char *solve(int argc, char *argv[]) {
/* Closed form: triangular-number square minus square-pyramidal sum, S(n)^2 - SS(n); O(1). */
static char _answer[32];
long long n = parse_int(argv[1]);
long long sum = n * (n + 1) / 2;
long long square_of_sum = sum * sum;
long long sum_of_squares = (2 * n + 1) * (n + 1) * n / 6;
{ snprintf(_answer, sizeof _answer, "%lld", (long long)(square_of_sum - sum_of_squares)); return _answer; }
}