蓝桥杯:练功(题目解析)

题目

【问题描述】
   小明每天都要练功,练功中的重要一项是梅花桩。
   小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1。
   小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上。小明已经练了一段时间,他现在可以一步移动不超过 d 的距离(直线距离)。
   小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。
【输入格式】
   输入的第一行包含两个整数 n, m,分别表示梅花桩的行数和列数。
   第二行包含一个实数 d(最多包含一位小数),表示小明一步可以移动的距离。
【输出格式】
   输出一个整数,表示小明最少多少步可以到达目标。
【样例输入】
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);
    }
}


题目解析

   根据题目的样式输入输出可以推算出计算的距离是两点的最短距离,如n=3,m=4,距离distance则约等于3.6左右,而不是5

猜你喜欢

转载自blog.csdn.net/qq_47168235/article/details/108917774