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

    科技2022-07-13  165

    题目

    【问题描述】    小明每天都要练功,练功中的重要一项是梅花桩。    小明练功的梅花桩排列成 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

    Processed: 0.014, SQL: 8