名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

ABC026 D - 高橋君ボール1号

回答

Submission #450906 - AtCoder Beginner Contest 026 | AtCoder

なんとなく解法は浮かんでいたんですけどねえ…
初めて二分法を活用できたような気がします,誤差が怖くてループ回しすぎている疑惑がありますが….
f(t)=A×t+B×sin(C×t×π) を計算するのですが,そのtを二分法で求めていくだけです.
ABCのD問題としてもかなり簡単な気がします… Beginnerっていうのに嘘はなかった!

import math

a, b, c = map(int, input().split())
ft, low, high = 100, 0, 500
calc = lambda m: a * m + b * math.sin(c * m * math.pi)
for i in range(100):
    mid = (low + high) / 2
    if calc(mid) < ft:
        low = mid
    else:
        high = mid
print(low)