0024-Physical Experiments
問題(外部リンク)
実装の概要
問題ページに時刻tにおける速度vと座標yの式が与えられているため、それらを連立してyとvの式を作ることもできます。
ただ、y=avのような形で表すと最終的に階で答える際に階数を繰り上げるかどうかなどを考えるのがやや面倒なので、今回の実装では高さを先に計算してその都度vを計算して球が割れるかを判断するようにしました。v<200の制約上階数もそれほど大きくならないため十分間に合います。
public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ String tmpStr = br.readLine(); if(tmpStr == null){ break; } double inputV = Double.parseDouble(tmpStr); for(int i = 1; ; i++){ int height = i * 5 - 5; double v = Math.sqrt(2*9.8*height); if(v >= inputV){ System.out.println(i); break; } } } } }