トピック
【問題点】
シャオミンは毎日キゴンを練習しており、キゴン練習で一番大事なのは梅の花の山です。
シャオミンの梅の花の山は、n行m列に配置されています。隣接する2つの列の間の距離は1で、隣接する2つの列の間の距離も1です。
Xiaomingは最初の行と最初の列に立っており、n番目の行とm番目の列に移動したいと考えています。Xiao Mingはしばらくの間練習してきましたが、今では1ステップでd(直線距離)以下の距離を移動できます。
Xiao Mingは、梅の花の山から落ちずにターゲットに移動するために必要なステップ数を知りたがっていました。
【入力形式】入力
の最初の行には、梅の花の山の行数と列数を表す2つの整数n、mが含まれています。
2行目には、Xiao Mingが1ステップで移動できる距離を示す実数d(最大で1つの小数を含む)が含まれています。
【出力形式】
シャオミンが少なくともゴールに到達できる歩数を示す整数を出力します。
[サンプル入力]
3 4
1.5
[サンプル出力]
3
[評価ユースケースのスケールと規則]
評価ユースケースの30%について、2 <= n、m <= 20、1 <= d <= 20。
評価ケースの60%について、2 <= n、m <= 100、1 <= d <= 100。
すべての評価ケースで、2 <= n、m <= 1000、1 <= d <= 100。
コード
import java.util.Scanner;
public class Main {
//蓝桥杯要求class命名为Main,且无package
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
float d = scanner.nextFloat();
float distance = (float)Math.sqrt(((n-1)*(n-1)+(m-1)*(m-1)));//计算距离
int step = (int) Math.ceil(distance/d);//向上取整
System.out.println(step);
}
}
問題分析
質問のスタイル入力と出力によると、計算された距離は2点間の最短距離であると計算できます。たとえば、n = 3、m = 4、距離距離は5ではなく約3.6です。