E.三棱锥之刻

P为正三棱锥内部的中心,PA,PD为正三棱锥外接球半径,OP为正三棱锥内切球半径

结论:已知正三棱锥的棱长为a,那么正三棱锥外接球半径为:64a\frac{\sqrt{6}}{4}a46​​a ,正三棱锥内切球半径为:612a\frac{\sqrt{6}}{12}a126​​a

//minn为正三棱锥内切球半径,maxx为正三棱锥外接球半径
double minn = sqrt(6.0) * a / 12, maxx = sqrt(6.0) * a / 4;
double area;

本题分三种情况:

  1. 当染色半径 r≤612ar ≤ \frac{\sqrt{6}}{12}ar≤126​​a时, 即染色球还未触及正三棱锥内壁,那么就无法染色
if (r <= minn) area = 0;//无法染色,染色面积自然为0
  1. 当染色半径 r≥64ar ≥ \frac{\sqrt{6}}{4}ar≥46​​a时, 即染色球已经包含整个正三棱锥,那么整个正三棱柱的内部都会染色
else if (r >= maxx) area = sqrt(3.0) / 4 * f(a);//正三棱锥一个侧面三角形的面积
  1. 当染色半径 612a≤r≤64a\frac{\sqrt{6}}{12}a ≤ r ≤ \frac{\sqrt{6}}{4}a126​​a≤r≤46​​a 时,分为两个小情况:
    (1) 当横截面积 ≤ 是三角形的内切圆 即 横截圆的半径 ≤ 36a\frac{\sqrt{3}}{6}a63​​a

此时OG为底面三角形ABC的内切圆,OG为内切圆的半径为:d=36ad = \frac{\sqrt{3}}{6}ad=63​​a ,染色圆的半径为:r

那么染色球与其中一个底面三角形ABC形成的横截圆的半径为:r1=(r−612a)2−d2r_1 = \sqrt{(r - \frac{\sqrt{6}}{12}a)^2 - d^2}r1​=(r−126​​a)2−d2​

所以:此时底面三角形ABC染色面积为:πr12πr_1^2πr12​ ,有4个面就是 4πr124πr_1^24πr12​

(2) 当 正三角形的内切圆 < 横截圆 < 正三角形的外接圆 即 染色的面积如蓝色阴影部分:

这个面积分为两个部分:等腰三角形+扇形

此时的 r1,d,2dr_1, d, 2dr1​,d,2d 如图所示

3个等腰三角形面积 = r12−d2×d×3\sqrt{r_1^2-d^2} × d × 3r12​−d2​×d×3

扇形的弧度:α=(2π−acos(dr1)×2×3)÷3α = (2π - acos(\frac{d}{r_1} )× 2 × 3) ÷ 3α=(2π−acos(r1​d​)×2×3)÷3

3个扇形面积 = α2π×π×r12×3\frac{α}{2π} × π × r_1^2 × 32πα​×π×r12​×3

else {if (r1 <= d) {area = PI * r1 * r1;} else {double area1 = sqrt(f(r1) - f(d)) * d * 3;//3个等腰三角形的面积//cos() 是已知一个角的弧度值 x,求该角的余弦值 y;而 acos() 是已知一个角的余弦值 y,求该角的弧度值 x。//扇形面积 = ((2 * PI - 三个等腰三角形的角度) * 3 / 3) / (PI * 2) * PI * f(r1);double area2 = ((((PI * 2) - (acos(d / r1) * 2) * 3) / 3) / (PI * 2)) * PI * f(r1);area = area1 + area2; }}

完整的AC代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#define ll long long
#define int ll
#define PI acos(-1)
#define MOD 1000000007
using namespace std;
int read()
{int w = 1, s = 0;char ch = getchar();while (ch < '0' || ch>'9') { if (ch == '-') w = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { s = s * 10 + ch - '0';ch = getchar(); }return s * w;
}
//x的平方
double f(double x) {return x * x;
}
signed main() {double a;//题目给的正三棱锥的棱长double r;//题目给的染色的半径scanf("%lf%lf", &a, &r);// sqrt(6) * a / 12;是正三棱柱内切球的半径// sqrt(6) * a / 4; 是正三棱柱外接球的半径double minn = sqrt(6.0) * a / 12, maxx = sqrt(6.0) * a / 4;/*本题分三种情况:Ⅰ. 当染色半径 r <= sqrt(6) * a / 12; 那么就无法染色Ⅱ. 当染色半径 r >= sqrt(6) * a / 4;  那么整个正三棱柱的内部都会染色Ⅲ. 当染色半径 sqrt(6) * a / 12 < r < sqrt(6) * a / 4 时分为两个小情况:(1) 当横截面积 恰好是三角形的内切圆(2) 当横截面积 大于正三角形的内切圆 小于正三角形的外接圆*/double r1 = sqrt(f(r) - f(sqrt(6.0) * a / 12));//在正三棱锥的一个侧面被染色截面圆的半径double d = sqrt(3.0) / 6 * a;//正三角形的内切圆的半径double area;if (r <= minn) area = 0;else if (r >= maxx) area = sqrt(3.0) / 4 * f(a);//正三棱锥一个侧面三角形的面积else {if (r1 <= d) {area = PI * r1 * r1;} else {double area1 = sqrt(f(r1) - f(d)) * d * 3;//3个等腰三角形的面积//cos() 是已知一个角的弧度值 x,求该角的余弦值 y;而 acos() 是已知一个角的余弦值 y,求该角的弧度值 x。double area2 = 3 * ((((PI * 2) - (acos(d / r1) * 2) * 3) / 3) / (PI * 2)) * PI * f(r1);//扇形面积 = ((2 * PI - 三个等腰三角形的角度) * 3 / 3) / PI * 2 * PI * f(r1);area = area1 + area2;}}printf("%.6lf\n", area * 4);return 0;
}

2021牛客寒假算法基础集训营1 E.三棱锥之刻相关推荐

  1. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  2. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  3. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

  4. 2021牛客寒假算法基础集训营2 D.牛牛与整除分块

    2021牛客寒假算法基础集训营2 D.牛牛与整除分块 题目链接 题目描述 整除分块,又称数论分块.是数论算法中的重要技巧,你可以在各种需要枚举因子的连续求和类问题中见到它的身影.如杜教筛,莫比乌斯反演 ...

  5. 2021牛客寒假算法基础集训营5 B.比武招亲(上)

    2021牛客寒假算法基础集训营5 B.比武招亲(上) 题目链接 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐在榜上留下了这样一道问题,谁做出来了就可以 ...

  6. 2021牛客寒假算法基础集训营4

    九峰与签到题 链接:https://ac.nowcoder.com/acm/contest/9984/A 来源:牛客网 题目描述 九峰正在准备一场毒瘤比赛,他是如此毒瘤以致于他想方设法降低通过率,他认 ...

  7. 2021牛客寒假算法基础集训营5 比武招亲(上)(组合数)

    链接:https://ac.nowcoder.com/acm/contest/9985/B 来源:牛客网 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐 ...

  8. 2021牛客寒假算法基础集训营3,签到题DGHIJ

    D. Happy New Year!模拟 #include<bits/stdc++.h> using namespace std; int main(){ios::sync_with_st ...

  9. 2021牛客寒假算法基础集训营6 J.天空之城

    J.天空之城 题目链接:https://ac.nowcoder.com/acm/contest/9986/J 题目描述: 天空之城有5个小镇,名字分别为Ada, Aed, Akk, Orz, Apq, ...

最新文章

  1. 企业级UML/MDA工具Trufun 2007系列发布!
  2. CH4402 小Z的袜子(莫队)
  3. Python实现模板
  4. 下载spotify音乐_如何在Spotify上播放更高质量的音乐
  5. execjs执行js出现window对象未定义时的解决_JS逆向 | 助力新手 , 两个JS逆向喂饭教程...
  6. 使用 Postman 调试 HTTP(s) 接口
  7. Spring Boot 2.x(十四):整合Redis,看这一篇就够了
  8. easyui-textbox锁定按钮不锁定_EU5几乎锁定年度销量冠军,为何北汽新能源却高兴不起来?...
  9. 《还珠格格》《大宅门》取景地将被拍卖:3.6亿起拍
  10. java二进制传输_Java基于TCP方式的二进制文件传输
  11. 关于axure的 中继器表格合计功能
  12. 大田第一次和「 IDO 老徐 」连麦:诊断个人 IP
  13. 计算机网络局域网之无线局域网
  14. spring boot redisLock redis分布式锁
  15. 信息论与编码_从信息论谈数字孪生系统的大行其道
  16. ChatGPT 登上了时代杂志封面,意味着什么?
  17. django自带模块实现翻页功能
  18. Java连接并操纵MySQL数据库的全过程
  19. 四舍六入五成双并保留一位有效位-数据修约
  20. C++ Crow web框架使用;升级cmake ;pthread、boost、asio 报错

热门文章

  1. python 均匀分布_python 实现生成均匀分布的点
  2. 具体应如何办理股票开户?
  3. 分享几个css素材的网站
  4. 计算机作业我家乡的变化英语作文,我家乡的变化英语作文(精选12篇)
  5. C#基础教程(一).NET框架
  6. 国家职业标准职业编码查询_如何以自由职业者的身份学习编码和赚钱
  7. 【自己开发小程序】自己怎么开发一个小程序呢?
  8. unturned服务器参数修改,《Unturned》3.X.X控制台指令教程
  9. 该项目不在XXX中。请确认该项目的位置,然后重试。之解决办法
  10. android 评论功能盖楼,微信公众号留言功能升级,评论区能“盖楼”了