裁缝大师题解
思路:
1.求圆上的若干个点
2.由于是正多边形,每个点与圆心的角度相同,可以把圆分解成n块
3.圆上的坐标可以用圆心的坐标+半径*cos(rad)/sin(rad)来得到。而rad可以根据等份来划分。
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const double pi=acos(-1.0); const double eps=1e-9; int main() { int T; scanf("%d",&T); while(T--) { double x,y,r,n; scanf("%lf%lf%lf%lf",&x,&y,&r,&n); for(int i=(int)n;i>=1;i--) { double xa=cos((1.0*i/n)*2*pi); double ya=sin((1.0*i/n)*2*pi); double ans1=x+xa*r; double ans2=y+ya*r; if(fabs(ans1)<eps) { ans1=0.0; } if(fabs(ans2)<eps) { ans2=0.0; } printf("%.2f %.2f\n",ans1,ans2); } } return 0; }