What was the specific math training program at UESTC in 2018?

更新于
2026-10-10 02:25:06
1阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计556个文字,预计阅读时间需要3分钟。

What was the specific math training program at UESTC in 2018?

给定三个点,求可以构成的最小正n边形的边数。

1. 题意:设定三个点,求可构成的最小正n边形的边数。

2.思路分析:先将距离和角度的函数写出来,方便后续处理;利用余弦定理求解三角形边长,进而确定正多边形的边数。

Ευκλειδης
原题地址
1. 题意:给定三个点,求可以构成的最小正n边形的边数。
2. 思路分析:

先把距离以及角度的函数写出,方便以后处理;

由余弦定理可以求出这三条边对应的角度。对于正 n 边形,每个圆心角为 1/n 2 pi,当我们用每条边对应的圆心角/3~1000内的多边形的圆心角,如果可以整除,那么就是最小的边数。注意:我们求的角度是圆周角=圆心角/2.

What was the specific math training program at UESTC in 2018?

#include <bits/stdc++.h> using namespace std; typedef long long ll; #define inf 0x3f3f3f3f #define maxn 200005 const int mod=1e9+7; #define eps 1e-6 #define pi acos(-1.0) bool zero(double n){ return n<eps&&n>-eps; } double dis (double x1,double y1,double x2,double y2){ return sqrt( (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } double ang(double a,double b,double c){ return acos( (a*a+b*b-c*c)/(2*a*b) ); } bool check (double n){ return zero(n-(int)(n+0.5)); } ll quipow(ll a,ll b){ ll ans=0; while(b>0){ if(b%2)ans=ans*a; b=b/2; a=a*a; } return ans; } int main(){ double x[3],y[3],a,b,c,A,B,C; int i,j; for(i=0;i<3;i++){ cin>>x[i]>>y[i]; } a=dis(x[0],y[0],x[1],y[1]); b=dis(x[0],y[0],x[2],y[2]); c=dis(x[1],y[1],x[2],y[2]); A=ang(a,b,c)/pi; B=ang(b,c,a)/pi; C=ang(c,a,b)/pi; for(i=3;i<=2000;i++){ if(check(A*i)&&check(B*i)&&check(C*i))break; } cout<<i<<endl; }

本文共计556个文字,预计阅读时间需要3分钟。

What was the specific math training program at UESTC in 2018?

给定三个点,求可以构成的最小正n边形的边数。

1. 题意:设定三个点,求可构成的最小正n边形的边数。

2.思路分析:先将距离和角度的函数写出来,方便后续处理;利用余弦定理求解三角形边长,进而确定正多边形的边数。

Ευκλειδης
原题地址
1. 题意:给定三个点,求可以构成的最小正n边形的边数。
2. 思路分析:

先把距离以及角度的函数写出,方便以后处理;

由余弦定理可以求出这三条边对应的角度。对于正 n 边形,每个圆心角为 1/n 2 pi,当我们用每条边对应的圆心角/3~1000内的多边形的圆心角,如果可以整除,那么就是最小的边数。注意:我们求的角度是圆周角=圆心角/2.

What was the specific math training program at UESTC in 2018?

#include <bits/stdc++.h> using namespace std; typedef long long ll; #define inf 0x3f3f3f3f #define maxn 200005 const int mod=1e9+7; #define eps 1e-6 #define pi acos(-1.0) bool zero(double n){ return n<eps&&n>-eps; } double dis (double x1,double y1,double x2,double y2){ return sqrt( (x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } double ang(double a,double b,double c){ return acos( (a*a+b*b-c*c)/(2*a*b) ); } bool check (double n){ return zero(n-(int)(n+0.5)); } ll quipow(ll a,ll b){ ll ans=0; while(b>0){ if(b%2)ans=ans*a; b=b/2; a=a*a; } return ans; } int main(){ double x[3],y[3],a,b,c,A,B,C; int i,j; for(i=0;i<3;i++){ cin>>x[i]>>y[i]; } a=dis(x[0],y[0],x[1],y[1]); b=dis(x[0],y[0],x[2],y[2]); c=dis(x[1],y[1],x[2],y[2]); A=ang(a,b,c)/pi; B=ang(b,c,a)/pi; C=ang(c,a,b)/pi; for(i=3;i<=2000;i++){ if(check(A*i)&&check(B*i)&&check(C*i))break; } cout<<i<<endl; }