this repo has no description
1/***
2!Test
3expected:
4- !Result
5 solution: !Solution
6 objective: 337561
7***/
8
9% perfsq2.mzn
10% vim: ft=zinc ts=4 sw=4 et
11%
12% Perfect squares: find a square equal to the sum of smaller, distinct squares.
13
14int: n = 100;
15
16% x[k] = 1 iff k^2 is part of the sum.
17%
18array [1..n] of var 0..1: x;
19
20% t is the sum of the first n squares, the largest value our sum can have.
21%
22int: t = ((n * (n + 1) * (2 * n + 1)) div 6);
23
24% squares is the set of square numbers less than t.
25%
26set of int: squares = {i * i | i in 1..(n * n) where i * i <= t};
27
28% k is the sum of the squares selected by the x[i].
29%
30var squares: k = sum (i in 1..n) (i * i * x[i]);
31
32solve maximize(k);
33
34output [show(k), "\n"];
35
36% output
37% [ show(k), " = sum of "
38% ] ++
39% [ if fix(x[i]) = 1 then show(i * i) ++ " " else "" endif
40% | i in 1..n
41% ] ++
42% [ "\n"
43% ];