题目大意:给定一个字符串序列,不同的字符代表不同的形状(包括等边三角形、矩形、圆形)。按字符串书顺序放置这些图形,求包围这些图形所需轮廓线的长度。
思路:容易发现对于左起第一个矩形之后的轮廓线到右起倒数第一的矩形之间的轮廓线是水平的。那么我们首先从左侧开始找第一个矩形和最后一个矩形,计算中间所夹的长度。然后单独讨论两端的长度。
一个难点在于,三角形到圆的连线是与圆相切的。因此轮廓线上有一段长度是圆弧。那么我们就需要求出圆心角。最容易理解的方式是建系设点,然后推导出公式,利用库函数的反三角函数求出角度即可。
#include
using namespace std;
const double pai = 3.14159265358979;
char s[25];
double ans;
signed main(){
int n = 0, fir = 0, last = 0; cin >> n;
getchar();
for (int i = 1; i 1) ans += (last - fir - 1) * 2;
if (fir >= 2) {
ans += 2;
for (int i = 2; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?