about summary refs log tree commit diff
path: root/others
diff options
context:
space:
mode:
authorRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-11 11:37:48 +0700
committerRaphael McSinyx <vn.mcsinyx@gmail.com>2017-02-11 11:37:48 +0700
commitdf9a0d140a7b7edef66f95aa13b5bb4488147f68 (patch)
treede213e8e6abf244426fcec5974c1cc247897f869 /others
parent092019121ad5ef6f82cd8fe7bf6ee143fce9648d (diff)
downloadcp-df9a0d140a7b7edef66f95aa13b5bb4488147f68.tar.gz
Fast and furiously add others/volume1
Diffstat (limited to 'others')
-rw-r--r--others/volume1/002.pas21
-rw-r--r--others/volume1/003.pas15
-rw-r--r--others/volume1/004.pas33
-rw-r--r--others/volume1/006.pas27
-rw-r--r--others/volume1/007.pas18
-rw-r--r--others/volume1/008.pas30
-rw-r--r--others/volume1/009.pas34
-rw-r--r--others/volume1/010.pas21
-rw-r--r--others/volume1/012.pas28
-rw-r--r--others/volume1/013.pas9
-rw-r--r--others/volume1/014.pas9
-rw-r--r--others/volume1/015.pas22
-rw-r--r--others/volume1/017.pas9
-rw-r--r--others/volume1/018.pas11
-rw-r--r--others/volume1/020.pas32
-rw-r--r--others/volume1/README.pdfbin0 -> 689259 bytes
-rw-r--r--others/volume1/fibonacci.pas103
17 files changed, 422 insertions, 0 deletions
diff --git a/others/volume1/002.pas b/others/volume1/002.pas
new file mode 100644
index 0000000..7732052
--- /dev/null
+++ b/others/volume1/002.pas
@@ -0,0 +1,21 @@
+uses fibonacci;
+
+var
+  m: int64;
+  i: byte;
+
+begin
+  readln(m);
+  if m <= 2 then
+    begin
+      writeln('1 1');
+      exit
+    end;
+
+  for i := 3 to 88 do
+    if fibonacci93[i] > m then
+      begin
+        writeln(i - 1, ' ', fibonacci93[i - 1]);
+        exit
+      end
+end.
diff --git a/others/volume1/003.pas b/others/volume1/003.pas
new file mode 100644
index 0000000..a4818da
--- /dev/null
+++ b/others/volume1/003.pas
@@ -0,0 +1,15 @@
+var
+  n: int64;
+  l, s: byte;
+
+begin
+  readln(n);
+  l := 0;
+  s := 0;
+  repeat
+    inc(l);
+    s := s + n mod 10;
+    n := n div 10
+  until n = 0;
+  writeln(l, ' ', s)
+end.
diff --git a/others/volume1/004.pas b/others/volume1/004.pas
new file mode 100644
index 0000000..caf5142
--- /dev/null
+++ b/others/volume1/004.pas
@@ -0,0 +1,33 @@
+var
+  prime: array [2..1000000] of boolean;
+  i, j, n, k: longint;
+  b: boolean = true;
+
+begin
+  for i := 2 to 1000000 do
+    prime[i] := true;
+  for i := 2 to 1000 do
+    if prime[i] then
+      for j := i to 1000000 div i do
+        prime[i * j] := false;
+
+  readln(n, k);
+  if n < 2 then
+    writeln('FALSE')
+  else if n <= 1000000 then
+    writeln(prime[n])
+  else
+    begin
+      for i := 2 to trunc(sqrt(n)) do
+        if n mod i = 0 then
+        begin
+          b := false;
+          break
+        end;
+      writeln(b)
+    end;
+  for i := 2 to k do
+    if prime[i] then
+      write(i, ' ');
+  writeln
+end.
diff --git a/others/volume1/006.pas b/others/volume1/006.pas
new file mode 100644
index 0000000..989acba
--- /dev/null
+++ b/others/volume1/006.pas
@@ -0,0 +1,27 @@
+var
+  a, b, g: int64;
+  c, d: longint;
+
+
+function gcd(x, y: int64): int64;
+  var
+    z: longint;
+
+  begin
+    while y > 0 do
+      begin
+        z := y;
+        y := x mod y;
+        x := z
+      end;
+    gcd := x
+  end;
+
+
+begin
+  readln(a, b, c, d);
+  a := a * d + b * c;
+  b := b * d;
+  g := gcd(a, b);
+  writeln(a div g, ' ', b div g)
+end.
diff --git a/others/volume1/007.pas b/others/volume1/007.pas
new file mode 100644
index 0000000..8a544b2
--- /dev/null
+++ b/others/volume1/007.pas
@@ -0,0 +1,18 @@
+var
+  n, i: int64;
+  a, b, c: smallint;
+
+begin
+  readln(n);
+  a := 1;
+  b := 1;
+  i := 2;
+  while i < n do
+    begin
+      c := a;
+      a := b;
+      b := (c + a) mod 1000;
+      inc(i)
+    end;
+  writeln(b)
+end.
diff --git a/others/volume1/008.pas b/others/volume1/008.pas
new file mode 100644
index 0000000..2d0f2d0
--- /dev/null
+++ b/others/volume1/008.pas
@@ -0,0 +1,30 @@
+var
+  n, d, m, i: byte;
+  p: qword = 1;
+
+begin
+  readln(n);
+  d := n div 3;
+  m := n mod 3;
+
+  if n < 3 then
+    begin
+      writeln(n);
+      exit
+    end;
+
+  if m = 1 then
+    begin
+      for i := 2 to d do
+        p := p * 3;
+      p := p * 4
+    end
+  else
+    for i := 1 to d do
+      p := p * 3;
+
+  if m = 2 then
+    p := p * 2;
+
+  writeln(p)
+end.
diff --git a/others/volume1/009.pas b/others/volume1/009.pas
new file mode 100644
index 0000000..67f57b1
--- /dev/null
+++ b/others/volume1/009.pas
@@ -0,0 +1,34 @@
+var
+  n, i, tmp: longint;
+  a: array of longint;
+
+begin
+  readln(n);
+  if n > 1 then
+    setlength(a, trunc(sqrt(n * 2 + 2.25) - 1.5))
+  else
+    setlength(a, 1);
+  tmp := 0;
+  for i := 0 to length(a) - 2 do
+    begin
+      a[i] := i + 2;
+      inc(tmp, a[i])
+    end;
+  a[length(a) - 1] := n - tmp;
+
+  if length(a) > 1 then
+    while a[length(a) - 1] - a[length(a) - 2] > 2 do
+      for i := length(a) - 1 downto 1 do
+        begin
+          tmp := (a[i] - 1 - a[i - 1]) div 2;
+          if tmp > 0 then
+            begin
+              dec(a[i], tmp);
+              inc(a[i - 1], tmp)
+            end
+        end;
+
+  for i in a do
+    write(i, ' ');
+  writeln
+end.
diff --git a/others/volume1/010.pas b/others/volume1/010.pas
new file mode 100644
index 0000000..bf8ae90
--- /dev/null
+++ b/others/volume1/010.pas
@@ -0,0 +1,21 @@
+const
+  pow5: array[2..25] of qword = (25, 125, 625, 3125, 15625, 78125, 390625,
+                                 1953125, 9765625, 48828125, 244140625,
+                                 1220703125, 6103515625, 30517578125,
+                                 152587890625, 762939453125, 3814697265625,
+                                 19073486328125, 95367431640625,
+                                 476837158203125, 2384185791015625,
+                                 11920928955078125, 59604644775390625,
+                                 298023223876953125);
+
+var
+  n, count: qword;
+  i: byte;
+
+begin
+  readln(n);
+  count := n div 5;
+  for i := 2 to 25 do
+    count := count + n div pow5[i] * (i - 1);
+  writeln(count)
+end.
diff --git a/others/volume1/012.pas b/others/volume1/012.pas
new file mode 100644
index 0000000..79a91ee
--- /dev/null
+++ b/others/volume1/012.pas
@@ -0,0 +1,28 @@
+var
+  n, i, j: shortint;
+  pas_tri, pas_tri_old: array of int64;
+
+begin
+  readln(n);
+  setlength(pas_tri_old, n + 1);
+  pas_tri_old[0] := 1;
+  pas_tri_old[1] := 0;
+  setlength(pas_tri, n + 1);
+  pas_tri[0] := 1;
+  for i := 1 to n do
+    pas_tri[i] := 0;
+  writeln(1);
+  for i := 1 to n do
+    begin
+      write('1 ');
+      for j := 1 to i - 1 do
+        begin
+          pas_tri[j] := pas_tri_old[j] + pas_tri_old[j - 1];
+          write(pas_tri[j], ' ')
+        end;
+      pas_tri[i] := 1;
+      writeln(1);
+      for j := 0 to n do
+        pas_tri_old[j] := pas_tri[j]
+    end
+end.
diff --git a/others/volume1/013.pas b/others/volume1/013.pas
new file mode 100644
index 0000000..4884a20
--- /dev/null
+++ b/others/volume1/013.pas
@@ -0,0 +1,9 @@
+uses fibonacci;
+
+var
+  n: shortint;
+
+begin
+  readln(n);
+  writeln(fibonacci93[n + 1])
+end.
diff --git a/others/volume1/014.pas b/others/volume1/014.pas
new file mode 100644
index 0000000..d3d19c9
--- /dev/null
+++ b/others/volume1/014.pas
@@ -0,0 +1,9 @@
+uses fibonacci;
+
+var
+  n: shortint;
+
+begin
+  readln(n);
+  writeln(fibonacci93[n + 2])
+end.
diff --git a/others/volume1/015.pas b/others/volume1/015.pas
new file mode 100644
index 0000000..c9928ef
--- /dev/null
+++ b/others/volume1/015.pas
@@ -0,0 +1,22 @@
+var
+  n, i: smallint;
+  a: array of longint;
+  min, min_: longint;
+
+begin
+  readln(n);
+  min := 1000000000;
+  setlength(a, n);
+  for i := 0 to n - 1 do
+    begin
+      read(a[i]);
+      if a[i] < min then
+        min := a[i]
+    end;
+  min_ := 1000000000;
+  for i := 0 to n - 1 do
+    if (a[i] < min_) and
+       (a[i] > min) then
+         min_ := a[i];
+  writeln(min, ' ', min_)
+end.
diff --git a/others/volume1/017.pas b/others/volume1/017.pas
new file mode 100644
index 0000000..8c3595f
--- /dev/null
+++ b/others/volume1/017.pas
@@ -0,0 +1,9 @@
+var
+  c, i: smallint;
+
+begin
+  readln(c);
+  writeln(c div 4);
+  for i := 0 to c div 4 do
+    writeln((c - i * 4) div 2, ' ', i)
+end.
diff --git a/others/volume1/018.pas b/others/volume1/018.pas
new file mode 100644
index 0000000..05fd7e9
--- /dev/null
+++ b/others/volume1/018.pas
@@ -0,0 +1,11 @@
+var
+  n: int64;
+
+begin
+  readln(n);
+  if (n < 0) or
+     (sqr(trunc(sqrt(n))) <> n) then
+    writeln('NO')
+  else
+    writeln('YES')
+end.
diff --git a/others/volume1/020.pas b/others/volume1/020.pas
new file mode 100644
index 0000000..4d11bd2
--- /dev/null
+++ b/others/volume1/020.pas
@@ -0,0 +1,32 @@
+var
+  n, max, l, h, l0, h0: smallint;
+  a: array of int64;
+
+begin
+  readln(n);
+  setlength(a, n + 1);
+  for l := 0 to n - 1 do
+    read(a[l]);
+  a[n] := 0;
+  max := 0;
+  l := 0;
+  h := 0;
+
+  l0 := 0;
+  while l0 < n do
+    for h0 := l0 to n - 1 do
+      if a[h0] * a[h0 + 1] >= 0 then
+        begin
+          if max < h0 - l0 then
+            begin
+              max := h0 - l0;
+              l := l0;
+              h := h0
+            end;
+          l0 := h0 + 1;
+          break
+        end;
+
+  writeln(l + 1, ' ', h + 1)
+end.
+end.
diff --git a/others/volume1/README.pdf b/others/volume1/README.pdf
new file mode 100644
index 0000000..63f6d53
--- /dev/null
+++ b/others/volume1/README.pdf
Binary files differdiff --git a/others/volume1/fibonacci.pas b/others/volume1/fibonacci.pas
new file mode 100644
index 0000000..c1bb423
--- /dev/null
+++ b/others/volume1/fibonacci.pas
@@ -0,0 +1,103 @@
+unit fibonacci;
+
+interface
+  const
+    fibonacci93: array[1..93] of qword = (
+      1,
+      1,
+      2,
+      3,
+      5,
+      8,
+      13,
+      21,
+      34,
+      55,
+      89,
+      144,
+      233,
+      377,
+      610,
+      987,
+      1597,
+      2584,
+      4181,
+      6765,
+      10946,
+      17711,
+      28657,
+      46368,
+      75025,
+      121393,
+      196418,
+      317811,
+      514229,
+      832040,
+      1346269,
+      2178309,
+      3524578,
+      5702887,
+      9227465,
+      14930352,
+      24157817,
+      39088169,
+      63245986,
+      102334155,
+      165580141,
+      267914296,
+      433494437,
+      701408733,
+      1134903170,
+      1836311903,
+      2971215073,
+      4807526976,
+      7778742049,
+      12586269025,
+      20365011074,
+      32951280099,
+      53316291173,
+      86267571272,
+      139583862445,
+      225851433717,
+      365435296162,
+      591286729879,
+      956722026041,
+      1548008755920,
+      2504730781961,
+      4052739537881,
+      6557470319842,
+      10610209857723,
+      17167680177565,
+      27777890035288,
+      44945570212853,
+      72723460248141,
+      117669030460994,
+      190392490709135,
+      308061521170129,
+      498454011879264,
+      806515533049393,
+      1304969544928657,
+      2111485077978050,
+      3416454622906707,
+      5527939700884757,
+      8944394323791464,
+      14472334024676221,
+      23416728348467685,
+      37889062373143906,
+      61305790721611591,
+      99194853094755497,
+      160500643816367088,
+      259695496911122585,
+      420196140727489673,
+      679891637638612258,
+      1100087778366101931,
+      1779979416004714189,
+      2880067194370816120,
+      4660046610375530309,
+      7540113804746346429,
+      12200160415121876738
+    );
+
+implementation
+
+end.