長春大学第十四プログラミングコンテスト(レースを再現する)B

B ボウリングゲーム

トピックへのリンク:https://ac.nowcoder.com/acm/contest/912/B

タイトル

試合後CUSTの選手たちはボーリングに行く小さなRで、地域を終えました。


ボウリング、ゲームの難易度が非常に高いですが、これは学校のチームメンバーを生きることだけでは困難であり、それらはすべて(非常に強力で 揚げと 反転している10瓶の外に)。特に小さなR、目は一度10本のボトルを投げるためにあらゆる時間を閉じました。その中でもそんなにないボールが中にあるボトルをヒットしない原因下水道選手、ボールが下水道に投げたびに、そこにあります。
 

 



ラウンドはダウン、我々は戻ってボール少なく見つけ、そして最終的にいくつかの数字9ボールを残しました。彼らはあまりにも軽いので、9ボールを失うことは好きではありません。

あなたは妹のために働くした後、そのバックグラウンドを手動でボールを取得するために操作されるようにしましょう松江ボーリングクラブの技術は、ボールが、少数のボールは、ボールが立ち往生している原因となり、すぐに戻って来なかった、下水道内に落下するので、進んでいませんそれが今、このような状況につながる可能性があります。

学校のチームのメンバーは、いくつか知っている、彼らは少なくとも一人あたりです揚げや、一度だけ1下水道の選手。

青いエリアに示されている、ボウリングを私たちはこの時間について、背景は正方形のボックスであることを学んだ立ち往生されるS 1

 

    エントリー

S1、S2、2つの正の整数、によって入力コモンラインS 1及びS 2は確保する描画領域であるSを1 S 2 10 。9及びグラフィカル法)

出力
输出一行,即保龄球的直径 D。

你的答案与标准答案误差在±0.001范围以内都算正确。

样例
input
6 25
693 2853
output
2
21.586519

思路

将s1分为三个小三角形,两个直角边的边长之和就是sqrt(4*s1+s2),斜边边长就是sqrt(s2),列一元二次方程即可


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int s1,s2;
    while(cin>>s1>>s2)
    {
        double len=sqrt(s2+4*s1);
       
        double _1=(len+sqrt(len*len-8*s1))/2;
       
        double _2=(len-sqrt(len*len-8*s1))/2;
       
        double xie=sqrt(s2);
        
        double sum=xie+_1+_2;
      
        cout<<fixed<<setprecision(6)<<(4*s1)/sum<<endl;
 
    }
    return 0;
}

 

 

 

おすすめ

転載: www.cnblogs.com/Vampire6/p/10992423.html