题意:青蛙一次只能跳1单位距离,从圆上一点到另外一点,请问最小步数是多少,且路径所有点都不能经过⚪内
解法 旋转至a在角度为0处,这样b只会在0-180度浮动,然后可以分情况讨论
1.a=b 此时步数为0
2.b-a<=90只需要构造圆外等腰三角形 步数为2 顶点坐标根据等腰三角形三点一线推得(xa+xb,ya+yb);
3.对于步数3跟步数4 不难发现要对于a与b切线两点距离小于等于1与大于1讨论,这个角度可以写个程序跑一下,是b-a<=131时为3,>131为4
剩下细节的问题对于步数3时P的坐标可以根据M,与∠得出
#include <bits/stdc++.h>
using namespace std;
double pi=acos(-1.0);
struct point{
double x,y;
point(double x0=0,double y0=0):x(x0),y(y0){}
};
point rotate(double x,double y,double jiao){
jiao=jiao*pi/180.0;
return point(x*cos(jiao)-y*sin(jiao),x*sin(jiao)+y*cos(jiao));
}
void solve(int