圆的面积并
圆的面积教学设计 《圆的面积》教学设计优秀7篇

圆的面积教学设计《圆的面积》教学设计优秀7篇作为一名默默奉献的教育工作者,常常要根据教学需要编写教案,教案有助于学生理解并掌握系统的知识。
优秀的教案都具备一些什么特点呢?下面是可爱的小编飞白帮大伙儿收集整理的7篇《圆的面积》教学设计,希望对大家有一些参考价值。
《圆的面积》教学设计篇一教学目标:1、知识目标:通过操作,引导学生推导出圆面积的计算公式,并能运用公式解答一些简单的实际问题。
2、能力目标:培养学生的分析、观察和概括能力,发展学生的空间观念。
3、德育目标:激发学生参与整个课堂教学活动的学习兴趣,渗透转化的数学思想和极限思想。
教学重难点:圆面积公式的推导。
教学关键:弄清圆与转化后的近似图形之间的关系。
教具:多媒体计算机。
学具:每小组(4人一组)8等份、16等份和32等份的(硬纸)圆形、剪刀、刻度尺、一张圆形纸片。
教学过程:一、复习旧知、设疑导入同学们,有一首歌中唱到:结识新朋友,不忘老朋友。
新知识就好比我们的新朋友,旧知识就象我们的老朋友,在我们学习新知识之前,先去看看我们的老朋友吧!微机显示一个圆,再把圆涂成红色。
提问:这是什么图形?如果圆的半径用r表示,周长怎么表示?(2πr)周长的一半怎么表示?(πr)圆所占平面的大小叫什么?(圆的面积)出示课题。
怎样计算圆的面积呢?引入课题。
二、动手操作、探索新知1、通过度量,猜想圆面积的大小。
用边长等于半径的小正方形,直接度量圆面积(如图),观察后得出圆面积比4个小正方形面积(4r2)小,好象又比面积(3r2)大一些。
初步猜想:圆的面积相当于r2的3倍多一些。
3个小正方形由此看出,要求圆的精确面积通过度量是无法得出的。
2、启发学生回想平行四边形、三角形、梯形面积计算公式的推导过程,微机演示。
问:你有什么启示吗?(先转化成学过的图形,如长方形、三角形、梯形,再推导)我们在学习推导几何图形的面积公式时,总是把新的图形经过分割、拼合等办法,将它们转化成我们熟悉的图形,今天我们能不能也用这样的方法推导出圆面积的计算公式呢?3、学生小组合作。
圆的面积公式与周长公式

圆的面积公式与周长公式圆是数学中一种重要的几何形体,其特点是每个点到圆心的距离都相等。
在日常生活中,我们经常会遇到各种圆形的物体,如轮胎、蛋糕、铅笔顶等,因此学习圆的面积公式和周长公式是非常重要的。
本文将为大家介绍圆的面积公式和周长公式。
首先,我们来介绍圆的面积公式。
圆的面积公式是指圆形的面积与半径的关系,用符号表示为S=πr²,其中S表示圆的面积,π是一个特殊的数字,称为圆周率,约等于3.14,r表示圆的半径。
根据圆的面积公式可以算出不同半径的圆的面积,例如,当半径为1时,圆的面积为3.14平方单位,当半径为2时,圆的面积为12.56平方单位。
其次,我们来介绍圆的周长公式。
圆的周长公式是指圆形的周长与半径的关系,用符号表示为C=2πr,其中C表示圆的周长,π是圆周率,r表示圆的半径。
根据圆的周长公式可以算出不同半径的圆的周长,例如,当半径为1时,圆的周长为6.28单位长度,当半径为2时,圆的周长为12.56单位长度。
需要注意的是,圆的周长和直径的关系为C=πd,其中d表示圆的直径。
对于学习与应用圆的面积与周长公式,有以下几点指导意义:首先,需熟记圆的面积与周长公式,以及圆周率的数值。
这是进行计算的基础。
其次,需要懂得如何应用圆的面积与周长公式解决实际问题。
例如,可以用圆的面积公式计算铁盘的表面积,用圆的周长公式计算车轮的周长,用直径和周长的关系解决各种问题。
最后,需要给出准确的答案,并正确使用单位。
在应用圆的面积与周长公式进行计算时,需要注意单位的问题,如面积的单位是平方单位,周长的单位是长度单位。
综上所述,圆的面积与周长是解决许多实际问题时不可或缺的数学工具,应正确学习和应用,才能更好地服务于我们的生活。
小学数学六年级上册《圆的面积》教学设计(精选5篇)

小学数学六年级上册《圆的面积》教学设计(精选5篇)小学数学六年级上册《圆的面积》教学设计(精选5篇)作为一名辛苦耕耘的教育工作者,时常要开展教学设计的准备工作,教学设计是教育技术的组成部分,它的功能在于运用系统方法设计教学过程,使之成为一种具有操作性的程序。
那么什么样的教学设计才是好的呢?下面是小编为大家收集的小学数学六年级上册《圆的面积》教学设计,欢迎阅读与收藏。
《圆的面积》教学设计1目标预设:1、使学生经历操作、观察、估算、验证、讨论和归纳等数学活动的过程,探索并掌握圆的面积公式,能正确计算圆的面积,并能应用公式解决相关的简单实际问题。
2、使学生进一步体会转化的方法的价值,培养学生运用已有知识解决实际问题和合情推理的能力,培养空间观念,并渗透极限思想。
教学过程:一、引导估计,初步感知。
1、出示圆形电脑硬盘。
引导学生思考:要求这个硬盘的面积就是要求什么?圆面积的大小与什么有关?2、估计圆面积大小与半径的关系。
师先画一个正方形,再以正方形的边长为半径画一个圆,估计圆的面积大约是正方形面积的多少倍,在这里正方形边长是r,用字母表示正方形的面积是多少?圆的面积与它的半径有什么关系?二、动手操作,共同探索。
1、引发转化,形成方案。
(1)我们如何推导三角形,平行四边形,梯形的面积公式的?(2)准备如何去推导圆的面积?2、动手操作,共同探究(1)把一个圆平均分成了8份,每一份的图形是什么形状?能把这些近似的三角形拼成一个学过的图形吗?(2)动手操作。
同桌为一组,把课前准备的16份拼一拼,能否拼成一个近似的平行四边形。
(3)比较:与刚才老师拼成的图形有何不同?(4)想象:如果我们把这个圆平均分成32份、64份……拼成的图形有何变化呢?如果一直这样分下去,拼成的图形会怎么样?3、引导比较,推导公式。
圆与拼成的长方形之间有何联系?引导学生从长方形的面积,长宽三个角度去思考。
根据学生回答,相机板书。
长方形的面积=长×宽↓↓↓圆的面积=∏rr=∏r2追问:课始我们的估算正确吗?求圆的面积一般需要知道什么条件?三、应用公式,解决问题1、基本训练,练练应用公式,求圆的面积。
圆的面积和周长的计算公式

圆的面积和周长的计算公式圆是我们生活中常见的几何形状之一,它具有独特的特点和属性。
对于圆的面积和周长,我们可以通过以下公式来计算和求解。
一、圆的面积计算公式圆的面积是指圆的内部所包含的平面的大小。
了解圆的面积计算公式可以帮助我们在实际问题中应用,比如计算花坛的面积或者园艺场地的面积等。
假设圆的半径为r,那么圆的面积可以通过以下公式计算:面积= π * r^2其中,π(pi)是一个数学常数,代表圆周与直径的比值,约等于3.14159。
而r则代表圆的半径。
通过将半径的平方乘以π,我们即可得到圆的面积。
二、圆的周长计算公式圆的周长是指圆的边界长度,也可以理解为圆的一圈长度。
了解圆的周长计算公式可以帮助我们在实际问题中应用,比如计算圆桌布的长度或者圆形跑道的周长等。
同样假设圆的半径为r,那么圆的周长可以通过以下公式计算:周长= 2 * π * r这个公式的推导可以通过将圆的边界分割成无数个微小的弧长,并最终将这些弧长相加得到。
其中,π(pi)同样代表圆周与直径的比值,r代表圆的半径。
通过将半径乘以2π,我们即可得到圆的周长。
三、圆的面积和周长的实际应用圆的面积和周长的计算公式在日常生活和工作中有着广泛的应用。
以下是一些常见的实际应用场景:1. 建筑领域:在设计和规划建筑物或者花园场地时,我们需要计算圆形区域的面积和周长,以便合理布局和分配空间。
2. 工程测量:在工程测量中,我们经常需要计算管道、油罐、池塘等圆形结构的容量和尺寸,以便准确安排和规划。
3. 制造业:在制造业中,需要计算圆形零件的面积和周长,以便确定所需的原材料数量和成本。
4. 地理学:圆形湖泊、岛屿或者地理要素的面积和周长计算,有助于我们对地理环境进行研究和分析。
在这些应用场景中,了解并灵活应用圆的面积和周长的计算公式,可以帮助我们更好地解决实际问题,提高工作效率。
总结:圆的面积和周长的计算公式是数学中的重要知识点,也是我们日常生活中的实用技能。
圆的面积与周长的计算方法

圆的面积与周长的计算方法圆是几何学中一个重要的形状,在日常生活和数学领域中都有广泛的应用。
计算圆的面积和周长是我们常常会遇到的问题。
本文将介绍几种常用的计算圆的面积和周长的方法。
1. 圆的面积计算方法圆的面积(A)指的是圆所占据的平面区域的大小。
下面介绍两种计算圆的面积的方法。
1.1 πr²公式最常用的计算圆面积的方法是使用π(pi)和半径(r)的关系。
π是一个无限不循环小数,近似值为3.14159。
根据πr²公式,圆的面积可以用半径的平方乘以π来计算。
即A = πr²。
例如,如果给定一个圆的半径为5厘米,计算该圆的面积可以使用公式A = 3.14159 × 5² ≈ 78.54平方厘米。
1.2 πd²/4公式除了使用半径计算圆的面积外,也可以使用直径(d)计算。
直径是通过圆心并且与圆的两个点相接的线段的长度。
根据πd²/4公式,圆的面积可以用直径的平方乘以π再除以4来计算。
即A = πd²/4。
例如,如果给定一个圆的直径为10厘米,计算该圆的面积可以使用公式A = 3.14159 × 10²/4 ≈ 78.54平方厘米,在结果上与使用半径计算的结果是相同的。
2. 圆的周长计算方法圆的周长(C)指的是圆的边界一周的长度。
下面介绍两种计算圆周长的方法。
2.1 2πr公式最常用的计算圆周长的方法是使用半径(r)和π的关系。
根据2πr公式,圆的周长可以用半径乘以2再乘以π来计算。
即C = 2πr。
例如,如果给定一个圆的半径为5厘米,计算该圆的周长可以使用公式C = 2 × 3.14159 × 5 ≈ 31.42厘米。
2.2 πd公式除了使用半径计算圆的周长外,也可以使用直径(d)计算。
根据πd公式,圆的周长可以用直径乘以π来计算。
即C = πd。
例如,如果给定一个圆的直径为10厘米,计算该圆的周长可以使用公式C = 3.14159 × 10 ≈ 31.42厘米,在结果上与使用半径计算的结果是相同的。
圆的面积计算方法

圆的面积计算方法圆是几何中的常见形状,计算圆的面积是数学中的基本问题之一。
在日常生活和工作中,我们经常需要计算圆的面积,比如在做园艺设计、建筑规划和工程施工等方面。
因此,了解圆的面积计算方法对我们是非常有用的。
本文将介绍几种计算圆的面积的方法,希望能对大家有所帮助。
首先,我们来介绍最基本的计算圆的面积的方法——使用圆的半径。
圆的面积公式为,S=πr²,其中S表示圆的面积,π是一个常数,约等于3.14159,r表示圆的半径。
根据这个公式,我们可以很容易地计算出一个圆的面积。
比如,如果一个圆的半径是5厘米,那么它的面积就是25π平方厘米。
其次,我们可以介绍一种更简便的方法——使用圆的直径。
圆的直径是圆的边界上通过圆心的一条线段的长度,它恰好是圆的半径的两倍。
因此,我们可以通过直径来计算圆的面积。
圆的面积公式也可以表示为,S=π(d/2)²,其中S表示圆的面积,π是一个常数,约等于3.14159,d表示圆的直径。
根据这个公式,我们同样可以很容易地计算出一个圆的面积。
比如,如果一个圆的直径是10厘米,那么它的面积就是25π平方厘米。
除了使用公式计算圆的面积,我们还可以通过图形的方法来理解圆的面积。
我们可以将圆分成许多小的扇形,然后将这些扇形拼接在一起,就可以得到一个近似的矩形形状。
通过计算这个矩形的面积,我们也可以得到圆的面积的近似值。
这种方法在实际应用中也是非常有用的,尤其是在没有计算器或者电脑的情况下。
最后,我们还可以介绍一种更高级的方法——使用积分来计算圆的面积。
通过对圆的边界进行积分,我们可以得到圆的面积。
这种方法在数学分析中有着重要的应用,但在实际生活中并不常用。
综上所述,计算圆的面积是数学中的基本问题,我们可以通过不同的方法来计算圆的面积,比如使用圆的半径、直径,或者通过图形的方法和积分的方法。
在实际应用中,我们可以根据具体的情况选择合适的方法来计算圆的面积,以便更好地解决实际问题。
圆的面积公式大全

圆的面积公式大全1. 圆的面积公式圆的面积公式是计算圆形的面积的数学公式。
圆是一个平面上所有距离圆心相等的点的集合。
下面是计算圆的面积的几种常见公式。
1.1. 用半径计算圆的面积如果已知圆的半径r,则可以使用以下公式计算圆的面积:面积= π * r^2其中,π是一个常数,约等于3.14159。
1.2. 用直径计算圆的面积如果已知圆的直径d,则可以使用以下公式计算圆的面积:面积= π * (d/2)^2其中,π是一个常数,约等于3.14159。
1.3. 用周长计算圆的面积如果已知圆的周长c,则可以使用以下公式计算圆的面积:面积= (c^2) / (4 * π)其中,π是一个常数,约等于3.14159。
2. 示例下面通过几个示例展示如何使用上述公式计算圆的面积。
2.1. 示例一假设一个圆的半径为5cm,我们可以使用半径计算圆的面积的公式得到:半径 r = 5cm面积= π * r^2= 3.14159 * (5^2)= 3.14159 * 25≈ 78.54cm^2所以,该圆的面积约为78.54平方厘米。
2.2. 示例二假设一个圆的直径为8cm,我们可以使用直径计算圆的面积的公式得到:直径 d = 8cm面积= π * (d/2)^2= 3.14159 * (8/2)^2= 3.14159 * 4^2= 3.14159 * 16≈ 50.27cm^2所以,该圆的面积约为50.27平方厘米。
2.3. 示例三假设一个圆的周长为12cm,我们可以使用周长计算圆的面积的公式得到:周长 c = 12cm面积= (c^2) / (4 * π)= (12^2) / (4 * 3.14159)= 144 / 12.56636≈ 11.46cm^2所以,该圆的面积约为11.46平方厘米。
总结本文介绍了几种常见的计算圆的面积的公式,并通过示例演示了如何使用这些公式计算圆的面积。
熟练掌握这些公式可以帮助我们更好地理解圆的性质和特点。
圆的面积和周长计算

圆的面积和周长计算圆是几何中的一个基本图形,具有无限的对称性和独特的美感。
在数学中,我们经常需要计算圆的面积和周长,这对于解决实际问题和理解圆的性质都非常重要。
本文将介绍如何计算圆的面积和周长,并提供一些实际应用的例子。
一、圆的面积计算圆的面积是指圆所包围的平面区域的大小。
要计算圆的面积,我们需要知道圆的半径。
半径是从圆心到圆上任一点的距离,通常用字母r 表示。
圆的面积计算公式为:A = πr²其中,A表示圆的面积,π是一个数学常数,约等于3.14159,r是圆的半径。
例如,如果一个圆的半径为5cm,那么它的面积可以计算如下:A = π × 5²= 3.14159 × 25≈ 78.54所以,这个圆的面积约为78.54平方厘米。
二、圆的周长计算圆的周长是指圆周上的长度。
要计算圆的周长,我们同样需要知道圆的半径。
圆的周长计算公式为:C = 2πr其中,C表示圆的周长,π为数学常数,r为圆的半径。
以前述半径为5cm的圆为例,它的周长可以计算如下:C = 2π × 5= 2 × 3.14159 × 5≈ 31.42所以,这个圆的周长约为31.42厘米。
三、圆的面积和周长的实际应用圆的面积和周长计算在实际生活和工作中有很多应用。
以下是两个常见的例子:1. 圆的面积和周长在工程建设中的应用在建筑、道路和轨道等工程建设中,需要合理安排各种设施和材料的使用,并进行施工计划和预算。
圆的面积和周长计算可以帮助工程师确定建筑物的基础尺寸、道路的曲线半径、轨道的半径等。
通过计算圆的面积和周长,可以精确控制工程的尺寸,确保工程质量。
2. 圆的面积和周长在日常生活中的应用除了工程建设,圆的面积和周长计算也在日常生活中有很多应用。
例如,我们经常使用圆桌,计算桌面的面积可以帮助我们选择合适大小的桌布;计算圆饼的面积可以帮助我们确定合适的切割方法;计算花坛的面积可以帮助我们购买足够的土壤和植物。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《圆的并》解题报告1、题目描述①给定n(1≤n≤1000)个圆,求n个圆的并的面积。
圆的坐标和半径的范围是-10000到10000,答案精确到小数点后面6位。
2、算法分析关于求圆的并的方法有很多。
这中间有很多是求近似值的算法,例如随机算法,割平面算法,这些算法都很简单,当精度要求不高时,使用这些算法是比较好的选择。
但是,如果精度要求高一点,这些算法的复杂度也会大大的提高。
例如这里的数据范围,用随机算法时最坏情况下至少需要随机1010个点,割平面算法的复杂度也不止1000*1010的级别。
这道题,我们只有用理论上能求出准确值的算法(不考虑计算时的精度误差)。
由于圆的并是一个很复杂的形状,直接计算它的面积不是很容易,想法当然是把它们分割成若干部分,每一个部分求出它们的面积,而每一部分的面积都不是很难算。
这样就不难想到离散交点的方法,把所有的交点按照x坐标排序后,对任意两个交点,用一条条的竖直线去分割图形:图1①题目来源:经典问题这样,平面被分成若干条形区域,怎样计算条形区域的面积呢?由于没有交点,所以这个变得简单。
看图中绿色方框框住的区域里面的圆,就不难发现,它可以分成若干梯形和弓形的面积(下面的左图):图2考虑一般的情况,一个竖直区域的左右两条分界线,一个圆与它们相交的情况有3种:不与任意一条分界线相交、与其中一条相交,与两条都相交(相切不算相交)。
其实如果把每个圆的两条竖直切线都拿来离散,那么就只需要考虑圆与两条竖直线都相交的情况了。
两条分界线切割圆时,在两条分割线中会形成两条弧,上面和下面各一条。
这些弧之间不可能有交点,于是把它们的左的端点从上到下排序,左端点相同的按照右端点排序。
记一个层次,然后再从上往下扫描,遇到上边界就将层次加1,遇到下边界就将层次减1。
到了层次为0的时候,就形成了一个独立区域。
这个区域的面积可以通过两个弓形的面积和一个梯形的面积相接计算出来。
如图2的右,形成了两个独立区域,粉红色表示层次为1,绿色表示层次为2,蓝色表示层次为3。
再来分析算法的时间复杂度,最坏情况下,交点个数的级别是O(n 2)的,共分成了O(n 2)个区域,然后每一个区域都与n 个圆相交,加上排序,复杂度是O(n 3log 2n)的。
总感觉到题目描述很简单,应该复杂度降低一些。
上面的算法很直观,而下面说的算法也比较直观,可以把复杂度降为O(n 2log 2n)。
试想,如果人来做此题,而不使用计算机计算,那么,人会采取什么样的方法呢?看下面的图:两个圆相交的情况,可以把面积分成两个弓形的面积之和。
(上面两个图)下面是三个圆两两相交的情况,可以把面积看成是3个弓形与一个三角形面积之和。
(下面两个图)图3看图4,4个圆,如上图所示,可以看成是8个弓形(外面4个,里面4个)的面积,再加上一个4边形面积(外面的4边形),再减去一个4边形面积(里面的4边形)。
上面的图形虽然简单,人能够很快的看出它是什么样的图形拼接而成,但是,如果圆的个数多了一点,还能不能变得如此简单?从图3的3个圆的情况可以看出,有些交点是没有用到的!虽然3个圆有6个交点,但是,只有3个交点在计算中起到了作用。
观察这3个点与另外3个点的区别。
这3个圆的周围没有完全被蓝色部分包围!推广到一般的情况,也可以这样做。
首先要做一些预处理,如果一个圆完全被另一个圆包围,那么这一个圆可以删除。
删除后,如果一个圆是孤立的圆,不与其它任何圆相交,就可以把这个圆的面积现算出来,也将它删去。
剩下的工作就是求交点了。
对于一个圆来说,其他的某些圆覆盖了他的圆弧上的某一段,即若干个区间。
那么所有的圆覆盖的部分也是若干个区间。
如果有k 个区间被覆盖了,也就会有k 个区间没有被覆盖。
这2k 个区间被2k 个点分开。
图中黑色部分是被覆盖的部分,即“看不见的”,而绿色部分是为覆盖的部分,即“露在外面的”,所以在计算弓形的面积时,绿色部分所围成的弓形一定会计算在总面积中间。
所以我们用若干有向弦把这些部分分开,有向是指:沿圆的逆时针方向,如图5的右边所示。
对所有的圆都这样处理了以后,只看这些连线,有什么发现?不难发现任意图5一个分割点一定会有两条连线!一条连线连进来,一条连出去。
并且也只会有两条连线。
这个试着画就可以了,例如如果3个圆经过通过同一个点,那么其中一定有一个圆,这个点的两边的弧都被覆盖了,即这个点不是这个圆的分割点!如果任意一个分割点都会有两条连线,那么,这些连线之间形成了若干多边形。
这些多边形就是我们要求的多边形的面积。
但是,这些多边形中有的面积是负的,这个只需要看这个多边形的连线是顺时针的还是逆时针的,顺的为正,逆的为负。
用一个例子来说明这个算法。
然后再把一个被完全包含的圆和一个孤立的圆特殊处理删掉后,就变成了右边的图。
注意还有一个圆它没有被任意一个圆完全包围,但是它却没有圆弧露在外面。
算法就是这样,虽然没有严谨的证明来写,但是这样,感性的认识多于理性的思考,更容易使人理解。
有些东西,千言万语也表达不出来,而有些东西,无法用言语表达,也不需要用言语表达。
该是分析时间复杂度的时候了。
求每一个圆被覆盖的区间的复杂度是O(nlogn),因为需要排序,所以求所有的圆的覆盖区间也只需要O(n 2logn)了。
而算法其余的部分,例如前面的预处理,构造这些有向边,以及计算多边形的面积。
都不会高于这个复杂度。
不过似乎有个猜想,分割点的个数的级别是多少?上界是O(n2),但似乎很难达到这个上界。
[参考文献]《算法艺术与信息学竞赛》——刘汝佳黄亮著[讨论]似乎讨论的结果都是前面一种方法。
[感谢]周源、刘汝佳3、程序constchash=12343;inputfile='area.in';outputfile='area.out';zero=1e-8;varn,nodes:integer;x,y,r:array[1..1000]of extended;ans:extended;inter:array[0..1000,1..2]of extended;link,next:array[1..10000]of integer;node:array[1..10000,1..2]of extended;first:array[0..chash-1]of integer;procedure init;vari:integer;beginassign(input,inputfile);reset(input);readln(n);for i:=1 to n do readln(x[i],y[i],r[i]);close(input);end;function sqrdist(x1,y1,x2,y2:extended):extended;beginsqrdist:=sqr(x1-x2)+sqr(y1-y2);end;function dist(x1,y1,x2,y2:extended):extended;begindist:=sqrt(sqr(x1-x2)+sqr(y1-y2))end;procedure prepare;vari,j:integer;b:array[1..1000]of boolean;beginfillchar(b,sizeof(b),1);for i:=1 to n dofor j:=i+1 to n doif (x[i]=x[j])and(y[i]=y[j])and(r[i]=r[j]) then beginb[i]:=false;breakend;for i:=1 to n dofor j:=1 to n do if (i<>j)and(r[i]+zero<r[j])thenif dist(x[i],y[i],x[j],y[j])<=r[j]-r[i] then beginb[i]:=false;breakend;j:=0;for i:=1 to n do if b[i] then begininc(j);x[j]:=x[i];y[j]:=y[i];r[j]:=r[i]end;n:=jend;function getangle(x,y:extended):extended;beginif x<-zero then getangle:=arctan(y/x)+pielse if x>zero thenif y>0 then getangle:=arctan(y/x) else getangle:=arctan(y/x)+pi*2else if y>0 then getangle:=pi/2 else getangle:=pi*3/2end;procedure getcross(i,j:integer;var t1,t2:extended);vara,b,c,a1,b1,c1,x1,y1,x2,y2,t,l:extended;begina:=(x[i]-x[j])*2;b:=(y[i]-y[j])*2;c:=sqr(r[j])-sqr(r[i])+sqr(x[i])-sqr(x[j])+sqr(y[i])-sqr(y[j]);a1:=b;b1:=-a;c1:=a1*x[i]+b1*y[i];t:=a*b1-b*a1;x1:=(c*b1-b*c1)/t;y1:=(a*c1-c*a1)/t;l:=sqrt(sqr(r[i])-sqr(x1-x[i])-sqr(y1-y[i]));t:=sqrt(sqr(a1)+sqr(b1));x2:=x1+l*a1/t;y2:=y1+l*b1/t;x1:=x1*2-x2;y1:=y1*2-y2;t1:=getangle(x1-x[i],y1-y[i]);t2:=getangle(x2-x[i],y2-y[i]);if t2<t1 then t1:=t1-pi*2;t:=(t1+t2)/2;if dist(x[j],y[j],x[i]+r[i]*cos(t),y[i]+r[i]*sin(t))>r[j] then begin t:=t1;t1:=t2;t2:=t;if t2<zero then t2:=t2+pi*2 else t1:=t1-pi*2end;end;procedure sort(l,r:integer);vari,j:integer;k1,k2:extended;begini:=l;j:=r;k1:=inter[(l+r) shr 1,1];k2:=inter[(l+r) shr 1,2];while i<=j do beginwhile (inter[i,1]+zero<k1)or(abs(inter[i,1]-k1)<zero)and(inter[i,2]>k2+zero) do inc(i);while (inter[j,1]>k1+zero)or(abs(inter[j,1]-k1)<zero)and(inter[j,2]+zero<k2) do dec(j);if i<=j then begininter[0]:=inter[i];inter[i]:=inter[j];inter[j]:=inter[0];inc(i);dec(j)end;end;if l<j then sort(l,j);if i<r then sort(i,r)end;function getwhere(x,y:extended):integer;vari,t:integer;begint:=trunc(abs(x+y+zero)*100000) mod chash;i:=first[t];while i<>0 do beginif (abs(node[i,1]-x)<zero)and(abs(node[i,2]-y)<zero) then begingetwhere:=i;exitend;i:=next[i]end;inc(nodes);node[nodes,1]:=x;node[nodes,2]:=y;next[nodes]:=first[t];first[t]:=nodes;getwhere:=nodesend;function getchord(r,a:extended):extended;begingetchord:=sqr(r)/2*(a-sin(a))end;procedure getnode;vari,j,k,top,t1,t2:integer;beginnodes:=0;for i:=1 to n do begintop:=0;for j:=1 to n doif (i<>j)and (dist(x[i],y[i],x[j],y[j])+zero<r[i]+r[j]) then begininc(top);getcross(i,j,inter[top,1],inter[top,2]);end;if top>0 then beginsort(1,top);k:=0;for j:=1 to top doif (k=0)or(inter[j,1]>inter[k,2]) then begininc(k);inter[k]:=inter[j]endelseif inter[j,2]>inter[k,2] then inter[k,2]:=inter[j,2];top:=k;while (top>0)and(inter[top,2]+zero>inter[1,1]+pi*2) do beginif inter[top,1]-pi*2<inter[1,1] theninter[1,1]:=inter[top,1]-pi*2;dec(top)end;if top>0 then beginfor j:=1 to top-1 do beginans:=ans+getchord(r[i],inter[j+1,1]-inter[j,2]);t1:=getwhere(x[i]+r[i]*cos(inter[j+1,1]),y[i]+r[i]*sin(inter[j+1,1]));t2:=getwhere(x[i]+r[i]*cos(inter[j,2]),y[i]+r[i]*sin(inter[j,2]));link[t1]:=t2;end;ans:=ans+getchord(r[i],inter[1,1]+pi*2-inter[top,2]);t1:=getwhere(x[i]+r[i]*cos(inter[1,1]),y[i]+r[i]*sin(inter[1,1]));t2:=getwhere(x[i]+r[i]*cos(inter[top,2]),y[i]+r[i]*sin(inter[top,2]));link[t1]:=t2;endendelse ans:=ans+pi*r[i]end;end;procedure work;vari,j:integer;visited:array[1..10000]of boolean;beginans:=0;getnode;fillchar(visited,sizeof(visited),0);for i:=1 to nodes do if not visited[i] then beginj:=i;repeatvisited[j]:=true;ans:=ans+(node[link[j],1]*node[j,2]-node[j,1]*node[link[j],2])/2;j:=link[j];until j=iend;assign(output,outputfile);rewrite(output);writeln(ans:0:6);close(output)end;begininit;prepare;workend.。