第一次排位赛 I. Farm
2022/3/8 23:19:20
本文主要是介绍第一次排位赛 I. Farm,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一次排位赛 I. Farm
一道数学二维几何问题,少用高中的方程思维,多用一些math库里的东西,像反三角函数这样,直接计算出角度值进而计算就可。
记得 保留小数位数
#include<bits/stdc++.h> using namespace std; signed main() { int t; cin>>t; int k=0; double s1,s2; while(t--) { k++; double xc,yc,r; double xb,yb,xu,yu; cin>>xc>>yc>>r; cin>>xb>>yb>>xu>>yu; cout<<"Case "<<k<<": "; //先为左顶点设上未知数 double x0=xb,y0=yu; //计算 double deta_y=sqrt(r*r-(x0-xc)*(x0-xc)); double deta_x=sqrt(r*r-(y0-yc)*(y0-yc)); //计算相交的两个点的横纵坐标 double y=yc-deta_y; double x=xc+deta_x; //应该是 {x0,y}和{x,y0} //写出一个三角形的面积 s1=(y0-y)*(x-x0)/2.0; double x3=x0-xc; double y3=y-yc; double x4=x-xc; double y4=y0-yc; //写出圆上弦和半径构成的三角形的面积 s2=(x3*y4-x4*y3)/2.0; // cout<<"s2:"<<s2<<endl; //用反三角函数计算出角度值 后面用扇形面积公式得出结果 double sta=acos((x3*x4+y3*y4)/(sqrt(x3*x3+y3*y3)*sqrt(x4*x4+y4*y4))); //打印的时候记得 小数点保留位数 printf("%.5llf\n",s1+1/2.0*sta*r*r-s2); } }
这篇关于第一次排位赛 I. Farm的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现