zoukankan      html  css  js  c++  java
  • 【20171005】Openjudge 1.11-09 膨胀的木棍

    不得不说,写这道题的时候,我也快膨胀了~~~

    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述

    当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n*C)*L,其中C是热膨胀系数。

    当一根细木棍被嵌在两堵墙之间被加热,它将膨胀形成弓形的弧,而这个弓形的弦恰好是未加热前木棍的原始位置。

    你的任务是计算木棍中心的偏移距离。

    输入
    三个非负实数:木棍初始长度(单位:毫米),温度变化(单位:度),以及材料的热膨胀系数。
    保证木棍不会膨胀到超过原始长度的1.5倍。
    输出
    木棍中心的偏移距离(单位:毫米),保留到小数点后第三位。
    样例输入
    1000 100 0.0001
    样例输出
    61.329
    来源
    Waterloo local 2004.06.12

    生活总是充满了欢乐,这根小木棍感受到了夏日浓浓的热情,也禁不住膨胀起来了~~~

    那么,是谁那么无聊让我们去算它膨胀了多少呢?

    这个神奇的“偏移距离”

     1 #include<stdio.h>
     2 #include<math.h>
     3 double searchN(double l,double ln,double head,double end)
     4 {
     5     double mid,r,ln_temp,temp;
     6     mid=(head+end)/2.0;//mid是猜测的弧度 
     7     while(fabs(ln_temp-ln)>=1e-14)
     8     {
     9     mid=(head+end)/2;
    10         r=(l/2.0)/sin(mid/2.0);
    11         ln_temp=mid*r;
    12         if(ln_temp-ln>=1e-14)
    13         {
    14             temp=mid;
    15             end=temp;
    16             continue;
    17         }
    18         else if(ln_temp-ln<-1e-14)
    19         {
    20             temp=mid;
    21             head=temp;
    22             continue;
    23         }
    24     }
    25     return mid;
    26 }
    27 int main()
    28 {
    29     double c,n,l;
    30     double ln;//L_New
    31     scanf("%lf%lf%lf",&l,&n,&c);
    32     ln=(1+n*c)*l;
    33     
    34     double k=searchN(l,ln,0,M_PI);
    35     double h=(l/2.0)/sin(k/2)-(l/2.0)/tan(k/2);
    36     
    37     printf("%.3f
    ",h);
    38     return 0;
    39 }
  • 相关阅读:
    Sublime Text 3
    JobTracker等相关功能模块初始化
    .NET编程规范
    理解多线程设计模式(转)
    理解java中的ThreadLocal 专题
    情商--人生职场
    老师只喜欢好学生(转)
    不是因为项目让你不能发光,而是因为你才让项目不能发光
    考试系统--前进/后退功能
    tomcat配置文件server.xml具体解释
  • 原文地址:https://www.cnblogs.com/CXSheng/p/5661859.html
Copyright © 2011-2022 走看看