CodeForces 1C
来源:互联网 发布:现代通信网络试题 编辑:程序博客网 时间:2024/05/29 11:55
题意:给出正多边形的三个顶点,求正多边形的最小面积;
思路:
海伦公式: p=(a+b+c)/2,S=√p(p-a)(p-b)(p-c)(a,b,c为三角形的三边,S为三角形面积)
1.求外接圆半径r=a*b*c/4S
2.由余弦定理求出三个圆心角num[3]
(要注意的是,当三个点在同一段半圆弧上时,这时第三个圆心角应该用2π-num[0]-num[1],防止麻烦直接就令num[2]=2π-num[0]-num[1])
3.求这三个角的最大公约数为A, 那么这就是一个正2π/A边形.
4.三角形的面积S=1/2·r * r * sinA
5.2π/A*S即为所求.
#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<map>#include<queue>#include<cmath>#include<stack>#include<vector>#include<cstdio>#define MAXN 33000#define INF 0x3f3f3f3f#define lmid l,m,rt<<1#define rmid m+1,r,rt<<1|1#define ls rt<<1#define rs rt<<1|1#define Mod 1000000007#define i64 __int64#define LIMIT_ULL 100000000000000000using namespace std;const double PI = 3.1415926535;double fgcd(double a,double b){ if(b<=0.01) return a; return fgcd(b,fmod(a,b));}double num[3];int main(){ double a,b,c,d,e,f; scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f); double A=sqrt((a-c)*(a-c)+(b-d)*(b-d)); double B=sqrt((e-c)*(e-c)+(f-d)*(f-d)); double C=sqrt((a-e)*(a-e)+(b-f)*(b-f)); double S=(A+B+C)/2; double SUM=sqrt(S*(S-A)*(S-B)*(S-C)); double R=(A*B*C)/(4*SUM); num[0]=A,num[1]=B; for (int i=0;i<3;i++) num[i]=acos(1-num[i]*num[i]/(2*R*R)); num[2]=2*PI-num[0]-num[1]; double gcd=0; for(int i=0;i<3;i++) { gcd=fgcd(num[i],gcd); } //cout<<A<<" "<<B<<" "<<C<<" "<<S<<endl; //cout<<SUM<<" "<<R<<" "<<gcd<<endl; printf("%.6f\n", R*R*sin(gcd)*PI/gcd);}
阅读全文
0 0
- CodeForces 1C
- Codeforces 407C Codeforces Round #239 (Div. 1)C
- CodeForces 1C(计算几何)
- codeforces 1C 计算几何
- Codeforces-340-C(c++)
- Codeforces-507-C(c++)
- CodeForces 731C C
- CodeForces-612C C
- 【dp】Codeforces Round #110 (Div. 1) C
- Codeforces Round #142 (Div. 1) C. Triangles
- Codeforces 1C Ancient Berland Circus
- Codeforces Beta Round #1 A B C
- Codeforces MemSQL start[c]up Round 1
- CodeForces #1 C. Ancient Berland Circus
- Codeforces Beta Round #1 A B C
- Codeforces Round #230 (Div. 1)B,C
- codeforces 1C Ancient Berland Circus
- codeforces 2C Commentator problem (1)-- 几何
- 网络编程,http协议下载文件的第二种方式
- 质数中的质数(质数筛法)||51NOD1181
- CodeForces
- Java 枚举类的基本使用
- Python框架——flask(2)
- CodeForces 1C
- 集训第十二天(2017/8/11):刷题(二分法)
- 圆圈中最后剩下的数字
- 深入了解selenium及webdriver原理
- javaweb在校期间需要完成的任务
- 河南省多校连萌(三)【问题 F: 小ho的01串】
- Android使用react-native-video 播放视频一直重复播放的解决方法
- Android中级
- 暴利链表 钟