联想公司的 logo 设计

探讨了如何通过计算找出能够完全覆盖特定条件下两个圆的最小圆形区域的方法,包括了解题思路与具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                联想的显示屏校准(简单)

                                                                            1000ms                                 131072K                                           

联想公司最近要设计一个体现公司文化的 logo。联想的设计师想出了一个方案:先画了一个顶点 O,接着画出以顶点O为公共顶点的、夹角为 θ 的两条线段 l1l2,其中 l1 作为圆 C1 的直径,l2l 作为圆 C2C 的直径。两个圆需要画在同一个圆形的塑料板上。请算出这个塑料板最小的面积是多少。


输入格式

输入只有一行,一共 333 个浮点数 l1l2θ。其中 0=<l1,l2​<=10^3;−10^3≤θ≤10^3.

θ单位是度,即当 θ\thetaθ90 度时,sinθ=1


输出格式

输出一行,表示圆形塑料板的最小面积。结果误差在 10^-6 以内均被认为是正确的。


样例输入1
1 1 90
样例输出1
2.2888179796

样例输入2
6 6 -666
样例输出2
59.774440524

题意:已知两个圆的直径(一端共同在坐标轴的原点),且知道夹角,求在此平面的一个最小圆,能包含这两个已知圆。

题目链接:联想公司的 logo 设计

解题思路:关键就是确定圆的位置,证明我要去试试再补。

官方解释:连接两条线段的中点,向两边延长直到和两个圆相交,两个交点连线即为最小的外接圆直径。其中,两条线段中点的距离可以用余弦定理求得。需要注意精度问题,比如π 最好使用 acos(−1)而非 3.1415

代码:

// 联想公司的 logo 设计
//题目链接:http://nanti.jisuanke.com/t/11155
#include
    
    
     
     
#include
     
     
      
      
#include
      
      
       
       
#include
       
       
        
        
#include
        
        
          using namespace std; const double PI = acos(-1); //就是 π的值 int main() { double l1,l2,rad,ans; while(~scanf("%lf%lf%lf",&l1,&l2,&rad)){ double len=(l1*l1+l2*l2)-(2*l1*l2*cos(rad*PI/180));//余弦定理a^2+b^2-2*a*b*cos(角度)=c^2 len=sqrt(len)/2; //开根号求c ans=(len+(l1+l2)/2)/2; //大圆半径 ans=PI*ans*ans; //面积公式 printf("%.9f\n",ans); } return 0; } 
        
       
       
      
      
     
     
    
    

 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值