diff options
Diffstat (limited to '12/TP-ThanhHoá-2009/bai4.pas')
-rw-r--r-- | 12/TP-ThanhHoá-2009/bai4.pas | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/12/TP-ThanhHoá-2009/bai4.pas b/12/TP-ThanhHoá-2009/bai4.pas new file mode 100644 index 0000000..04839af --- /dev/null +++ b/12/TP-ThanhHoá-2009/bai4.pas @@ -0,0 +1,72 @@ +var + f: text; + n, i: shortint; + a: array of string; + + +function minus(num, bit: shortint): boolean; + begin + minus := num shr bit mod 2 = 1 + end; + + +function cal(n, b: shortint): boolean; + var + i, s: shortint; + + begin + s := 0; + + for i := 2 to n do + if minus(b, n - i) then + s := s - i + else + s := s + i; + + cal := s = -1 + end; + + +function equa(n, b: shortint): string; + var + i: shortint; + + begin + equa := '1'; + + for i := 2 to n do + begin + if minus(b, n - i) then + equa := equa + '-' + else + equa := equa + '+'; + + equa := equa + char(i + 48) + end; + + equa := equa + '=0' + end; + + +begin + assign(f, 'BAI4.INP'); + reset(f); + readln(f, n); + close(f); + setlength(a, 0); + + if n mod 4 mod 3 = 0 then + for i := 1 to 1 shl (n - 1) - 1 do + if cal(n, i) then + begin + setlength(a, length(a) + 1); + a[length(a) - 1] := equa(n, i) + end; + + assign(f, 'BAI4.OUT'); + rewrite(f); + writeln(f, length(a)); + for i := 0 to length(a) - 1 do + writeln(f, a[i]); + close(f) +end. |