about summary refs log tree commit diff
path: root/2ndary/12/TP-ThanhHoá-2009/bai4.pas
diff options
context:
space:
mode:
Diffstat (limited to '2ndary/12/TP-ThanhHoá-2009/bai4.pas')
-rw-r--r--2ndary/12/TP-ThanhHoá-2009/bai4.pas72
1 files changed, 72 insertions, 0 deletions
diff --git a/2ndary/12/TP-ThanhHoá-2009/bai4.pas b/2ndary/12/TP-ThanhHoá-2009/bai4.pas
new file mode 100644
index 0000000..04839af
--- /dev/null
+++ b/2ndary/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.