Ton
89 строк · 1.6 Кб
1(int, int) f(int a, int b, int c, int d, int e, int f) {
2;; solve a 2x2 linear equation
3int D = a * d - b * c;
4int Dx = e * d - b * f;
5int Dy = a * f - e * c;
6return (Dx / D, Dy / D);
7}
8
9int calc_phi() {
10var n = 1;
11repeat (70) { n *= 10; }
12var p = var q = 1;
13do {
14(p, q) = (q, p + q);
15} until (q > n);
16return muldivr(p, n, q);
17}
18
19int calc_sqrt2() {
20var n = 1;
21repeat (70) { n *= 10; }
22var p = var q = 1;
23do {
24var t = p + q;
25(p, q) = (q, t + q);
26} until (q > n);
27return muldivr(p, n, q);
28}
29
30var calc_root(m) {
31int base = 1;
32repeat(70) { base *= 10; }
33var (a, b, c) = (1, 0, - m);
34var (p1, q1, p2, q2) = (1, 0, 0, 1);
35do {
36int k = -1;
37var (a1, b1, c1) = (0, 0, 0);
38do {
39k += 1;
40(a1, b1, c1) = (a, b, c);
41c += b;
42c += b += a;
43} until (c > 0);
44(a, b, c) = (- c1, - b1, - a1);
45(p1, q1) = (k * p1 + q1, p1);
46(p2, q2) = (k * p2 + q2, p2);
47} until (p1 > base);
48return (p1, q1, p2, q2);
49}
50
51{-
52operator _/%_ infix 20;
53
54(int, int) ((int x) /% (int y)) {
55return (x / y, x % y);
56}
57
58(int, int) _/%_ (int x, int y) {
59return (x / y, x % y);
60}
61-}
62
63int ataninv(int base, int q) { ;; computes base*atan(1/q)
64base ~/= q;
65q *= - q;
66int sum = 0;
67int n = 1;
68do {
69sum += base ~/ n;
70base ~/= q;
71n += 2;
72} until base == 0;
73return sum;
74}
75
76int calc_pi() {
77int base = 64;
78repeat (70) { base *= 10; }
79return (ataninv(base << 2, 5) - ataninv(base, 239)) ~>> 4;
80}
81
82int main() {
83return calc_pi();
84}
85
86{-
87method_id | in | out
88TESTCASE | 0 | | 31415926535897932384626433832795028841971693993751058209749445923078164
89-}
90