座標(P x、P y)と(Q x、Q y )を持つ2つの点PとQは、次の特性を満たします。
- 座標Px 、 P y、Q x、およびQyは整数です。
- P x = −Qx。
- 線PQは、中心(0、0)と半径rの円に接しています。
- ある整数制限aに対して0 < Px≤a。
そのような点PとQのすべてのペアを見つけるにはどうすればよいですか?
たとえば、次の画像では、半径r = 2、極限a = 6の円があります。点のペアP=(6、2)とQ =(-6、-7)は、次の理由で解決策になります。
- PとQの座標は整数です。
- P x = −Qx。
- 線PQは円に接しています。
- 0< Px≤6。
しかし、これは1つのペアにすぎません。私はそのようなペアをすべて見つける必要があります。解決策の数には限りがあります。
それで、点の座標が円に接していて整数であるかどうかをチェックして、それらすべてをリストする方法はありますか?傾きの方程式と、円の中心から一次方程式までの最短経路を見てきましたが、最初のケースでは、座標を知る必要があります(これは、1桁ごとにブルートフォースすることで実行できますが、パターン、私の内臓は私が適用すべきある種の方程式があるべきだと私に言うので)、そして2番目のケースでは私は勾配方程式を知らなければなりません。
これは私が思いついたアルゴリズムですが、それが正しいか十分ではないと思います。
- すべての1≤Px≤aおよび-<em>a≤Qx≤-1について、勾配方程式y = mx + bを見つけます。
- すべてのy = mx + bについて、それが円に接しているかどうかを確認します(これを行う方法???)
- trueの場合、ペアを返します