9553アーチェリー
長い間数学を勉強していなかったので、最初は少し慌てていましたが、ゆっくり考えてみると、(1)目標の両端あたりの範囲を(2)確率に換算し、(3)全部加算すればいいのです.
最初はアーク接線に近いです.久しぶりに数学を勉強したので、どれがもっと効果的か分かりませんが、覚えている求角方法はこれしかありません...😭
しかし、ZeroDivisionなど、いろいろ考えなければならないことがあるようなので、アクサ人に変えました.三角形の3辺a,b,cを用いて,a,bの挟み角式を求める.これしか思いつかなかった...😭 例は返されてコミットされましたが、実行時にエラーが発生しました!!何が原因なのか分かりませんが、ValueErrorが発生した原因をあちこち探していましたが、私のコードには脆弱性があると判定されました.このコードは方向性を考慮していません.θわあ.θ+2πの区分はないようです.
最後にベクトルの内積を用いて,挟み角を求めることで問題を解決した.
目標が原点を通過した場合を除く.
https://www.mathway.com/ko/popular-problems/Trigonometry/392481
最初はアーク接線に近いです.久しぶりに数学を勉強したので、どれがもっと効果的か分かりませんが、覚えている求角方法はこれしかありません...😭
しかし、ZeroDivisionなど、いろいろ考えなければならないことがあるようなので、アクサ人に変えました.三角形の3辺a,b,cを用いて,a,bの挟み角式を求める.これしか思いつかなかった...😭 例は返されてコミットされましたが、実行時にエラーが発生しました!!何が原因なのか分かりませんが、ValueErrorが発生した原因をあちこち探していましたが、私のコードには脆弱性があると判定されました.このコードは方向性を考慮していません.θわあ.θ+2πの区分はないようです.
最後にベクトルの内積を用いて,挟み角を求めることで問題を解決した.
目標が原点を通過した場合を除く.
import math
exp = 0.000000
T = int(input())
for i in range(T):
N = int(input())
for j in range(N):
X1, Y1, X2, Y2 = map(int, input().split())
if (X1 == -X2 and Y1 == -Y2) or (X1 == 0 and Y1 == 0) or (X2 == 0 and Y2 == 0):
break
else:
exp += math.acos((X1*X2 + Y1*Y2)/math.sqrt((X1*X1 + Y1*Y1)*(X2*X2 + Y2*Y2)))
print("{:.5f}".format(round(exp/(math.pi*2), 5)))
exp = 0.00000
私はアルゴリズムを覚えていません(数学はどうしますか...)下記のサイトを参考にしました.https://www.mathway.com/ko/popular-problems/Trigonometry/392481
Reference
この問題について(9553アーチェリー), 我々は、より多くの情報をここで見つけました https://velog.io/@kueyeon0429/9553-양궁テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol