← Back to List

28797번: Дневнегреческая машина ↗

Solutions

Python 3
1.2 KB | 1209 chars
"""
[28797: Дневнегреческая машина](https://www.acmicpc.net/problem/28797)

Tier: Bronze 1
Category: 구현, 수학
"""


import sys
from math import sqrt, pi, sin, factorial, ceil, floor
from datetime import datetime, timedelta
sys.setrecursionlimit(10**7)

BLANK = " "

# inp = input
inp = lambda : sys.stdin.readline().rstrip()
mii = lambda x = BLANK : [*map(int,inp().split(x))]
mfi = lambda x = BLANK : [*map(float,inp().split(x))]
ii = lambda : int(inp())
fi = lambda : float(inp())
p = print

def f(A, dis):
  need = dis / 100
  
  mn = A - 3 * need
  
  if mn < 0:
    return 0
  
  mn = min(1, mn)
  
  return (need + mn) * 100

def solve():
  A = fi()
  
  if A <= 1:
    return A * 100
  
  # x: 소모 L
  
  # y: 묻는 정도: 1 - 2 * x
  
  # (A - 1) * 100 + 
  
  
  left = 0
  right = 100
  ans = 100
  
  delta = 0.00000001

  while left <= right:
    lmid = left * 2 / 3 + right / 3
    rmid = left / 3 + right * 2 / 3
    
    x = f(A, lmid)
    y = f(A, rmid)
    
    if x > y:
      ans = max(ans, x)
      right = rmid - delta
    else:
      ans = max(ans, y)
      left = lmid + delta
    
  return ans


if __name__ == "__main__":
  tc = 1

  for t in range(1, tc+1):
    ret = solve()
    
    p(ret)