summaryrefslogtreecommitdiff
path: root/euler120.c
blob: 48e63e69de68ea914d75fb6533b9eecf44a2f770 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>

/*   (a-1)^n + (a+1)^n mod a^2
 * = n*a*(-1)^(n-1) + (-1)^n + n*a + 1
 * = na*[(-1)^(n-1)+1] + (-1)^n + 1
 * = if (n is odd) 2na else 2
 */

int rmax(int a)
{
	int n = a / 2;
	if (a % 2 == 0)
		n--;
	return 2 * n * a;
}

int main()
{
	int sum = 0;
	for (int a = 3; a <= 1000; a++)
		sum += rmax(a);
	printf("%d\n", sum);
}