B Bowling Game
題目鏈接:https://ac.nowcoder.com/acm/contest/912/B
題目
CUST的隊員打完省賽后,小r帶著大家去打保齡球。
保齡球是一項難度非常高的游戲,然而這根本難不住校隊成員,他們個個都很厲害(炸和)一發10個瓶都倒。尤其是小r,每次都能閉著眼睛一次扔倒10個瓶。他們當中也有一個并不那么厲害的下水道玩家,每次都能把球丟進下水道里,導致一個球瓶都砸不中。
全國計算機程序設計大賽,
?
幾輪下來,我們發現回來的球越來越少,最后只剩幾個9號球了。他們不愛丟9號球,因為太輕了。
在詢問工作小姐姐后,得知:咱們松江保齡球俱樂部技術并不那么先進,所以后臺是人工操作把球撿回來,現在球沒有回來,導致球變少的原因是球卡住了,投進下水道就可能會導致現在這種情況。
校隊成員心里都有數,他們每人都至少炸和過一次,只有某下水道玩家。。。
我們得知后臺都是方形的盒子,大概這樣的時候保齡球會卡住,圖中藍色面積S1
長春理工大學數學競賽試題。
?
??? 輸入
輸入共一行,由s1,s2兩個正整數構成,s1和 s2為圖中面積,保證s1,s2≤109且圖形合法)
輸出
輸出一行,即保齡球的直徑 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; }
?
?
?