about summary refs log tree commit diff
path: root/12/TP-ThanhHoá-2009/bai4.pas
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2016-11-19 19:00:47 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2016-11-19 20:46:04 +0700
commitf97ad3e9e225a288e7a8a53c2ef0acb45a47dbde (patch)
tree4d2d7ff6fd480396ed862069e7edc26fa7b66ccd /12/TP-ThanhHoá-2009/bai4.pas
parent10de10a507238f3be43dee304e057679b5bb2736 (diff)
downloadcp-f97ad3e9e225a288e7a8a53c2ef0acb45a47dbde.tar.gz
Thêm đề 12 Thanh Hoá 2008-2009
Diffstat (limited to '12/TP-ThanhHoá-2009/bai4.pas')
-rw-r--r--12/TP-ThanhHoá-2009/bai4.pas72
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.