博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wannafly挑战赛25 B 面积并 数学
阅读量:5818 次
发布时间:2019-06-18

本文共 852 字,大约阅读时间需要 2 分钟。

题面

题意:有一个正n边形,它的外接圆的圆心位于原点,半径为l .以原点为圆心,r为半径作一个圆,求圆和这个正n边形的面积并。3<=n<=1e8  1<=l<=1e6 0<=r<=1e6

题解: r>=l  时 显然是大圆面积

         r<=h 时 h是正n边形,每个小等腰三角形的高,h=l*cos(pi/n),(结合n边形的边长和正弦公式推下就可以了),答案显然是正n边形 (S=l*sin(pi/n)*h   *n,也就是每个小的等腰三角形面积 *n)

         不然图形就是正n边形每段冒出来一个小圆弧围成的面积,这个面积就用扇形面积-那块三角形的面积就可以了

         另注意n是1e8 l,r是1e6 n*l*r可以有1e20了 加上小数位,double 已经要不够了

         记得用 long double 和%LF输出 而不是%lf

1 #include 
2 #define ld long double 3 using namespace std; 4 long double S,al,s,h,n,l,r,pi=acos(-1); 5 int main() 6 { 7 cin>>n>>l>>r; 8 if (r>=l) 9 {10 printf("%.2Lf",pi*r*r); 11 return 0;12 }13 h=l*cos(pi/n);14 S=l*sin(pi/n)*h;15 if (r<=h) printf("%.2Lf",S*n);16 else17 { 18 al=acos(h/r); 19 s=al*r*r-r*h*sin(al);20 printf("%.2Lf",(S+s)*n);21 }22 }

 

转载于:https://www.cnblogs.com/qywhy/p/9728871.html

你可能感兴趣的文章
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
CentOS 6.6 FTP install
查看>>
图解Ajax工作原理
查看>>
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
Php实现版本比较接口
查看>>
删除设备和驱动器中软件图标
查看>>
第四章 TCP粘包/拆包问题的解决之道---4.1---
查看>>
html语言
查看>>