QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#844349#9804. Guess the PolygonlonelywolfRE 0ms0kbPython31.7kb2025-01-05 19:59:172025-01-05 19:59:17

Judging History

This is the latest submission verdict.

  • [2025-01-05 19:59:17]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2025-01-05 19:59:17]
  • Submitted

answer

import sys
import numpy as np
import math

class Frac():
    def __init__(self, num: int, den: int):
        self.num = num
        self.den = den

def add(a: Frac, b: Frac) -> Frac:
    return Frac(a.num * b.den + a.den * b.num, a.den * b.den)

def mul(a: Frac, b: Frac) -> Frac:
    return Frac(a.num * b.num, a.den * b.den)

def ask(x: Frac) -> Frac:
    g = math.gcd(x.den, x.num)
    x.den //= g
    x.num //= g
    print('?', x.num, x.den)
    sys.stdout.flush()
    num, den = map(int, input().split())
    return Frac(num, den)

def answer(x: Frac):
    g = math.gcd(x.den, x.num)
    x.den //= g
    x.num //= g
    print('!', x.num, x.den)
    sys.stdout.flush()

def solve():
    n = int(input())

    st = set()
    for i in range(n):
        x, y = map(int, input().split())
        st.add(x)

    a = [v for v in st]
    a.sort()
    cnt = len(a)
    
    def work1():
        l = [Frac(0, 1)]
        for i in range(1, cnt - 1):
            t = ask(Frac(a[i], 1))
            l.append(t)
        l.append(Frac(0, 1))

        ans = Frac(0, 1)
        for i in range(0, cnt - 1):
            ans = add(ans, mul(add(l[i], l[i + 1]), Frac(a[i + 1] - a[i], 2)))

        answer(ans)
        
    def work2():
        l = []
        for i in range(0, cnt - 1):
            t = ask(Frac(a[i] + a[i + 1], 2))
            l.append(t)

        ans = Frac(0, 1)
        for i in range(0, cnt - 1):
            ans = add(ans, mul(l[i], Frac(a[i + 1] - a[i], 1)))

        answer(ans)

    if cnt == n:
        work1()
    else:
        work2()


if __name__ == "__main__":
    t = int(input())
    while t > 0:
        t -= 1
        solve()

详细

Test #1:

score: 0
Dangerous Syscalls

input:

2
4
3 0
1 3
1 1
0 0

output:


result: