牛客网---2016---蘑菇街搬圆桌
来源:互联网 发布:美国人评价张桃芳 知乎 编辑:程序博客网 时间:2024/04/30 20:02
题目:
现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。
输入:
一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000)
2 0 0 0 4
输出:
输出一个整数,表示答案
1
解析:
1 . 题目可能比较难懂,其实很简单,在我看来就是求直线距离。
2 . 这种破题目居然有坑
如果我们直接计算出两点的距离,然后除以直径求解,测试数据只能通过80%。
所以应当给把数据缩小,缩小方法嘛。。。。简单来说,你转换成long没毛病。
解题所需函数:
1 . 转换为绝对值数据,转换为int型数据方法
double s=Math.sqrt(dx*dx+dy*dy);// 直接将s转换为int 采用向上取整的方法int step = (int)Math.ceil(s);// 直接将s转换为int 采用向下取整的方法int step = (int)Math.floor(s);// 直接将s转换为int 采用四舍五入的的方法int step = (int)Math.round(s);
代码:
import java.util.Scanner;public class Main { public static void main(String[] args) { // 获取数据 Scanner in = new Scanner(System.in); while (in.hasNext()) { int r = in.nextInt(); int x = in.nextInt(); int y = in.nextInt(); int x1 = in.nextInt(); int y1 = in.nextInt(); // 换句话讲,其实两个点最大的允许距离是直径,所以按照执行等比例缩小 double dx=Math.abs((x1-x))/(2*r); double dy=Math.abs((y1-y))/(2*r); double s=Math.sqrt(dx*dx+dy*dy); // 直接将s转换为int 采用不足进位的方法 int step = (int)Math.ceil(s); System.out.println(step); } in.close(); }}
阅读全文
0 0
- 牛客网---2016---蘑菇街搬圆桌
- 蘑菇街2016研发工程师_搬圆桌
- 蘑菇街笔试题 搬圆桌
- 搬圆桌
- 搬圆桌
- 搬圆桌
- 搬圆桌
- 搬圆桌
- 搬圆桌问题
- 搬圆桌-Java
- 牛客网---2016---蘑菇街聊天
- 华为机试---搬圆桌
- 牛客网---2016---蘑菇街最大间隔
- 牛客网---2016---蘑菇街投篮游戏
- 牛客网---2016---蘑菇街回文串
- 蘑菇街2016招聘笔试
- 牛客网---2016---百度蘑菇阵
- 蘑菇街
- LeetCode
- 关于Python的面试题
- linux shell脚本错误/bin/sh^M以及dos2unix
- 看了稳赚不赔!超全程序员必备软件总结!
- bcloud
- 牛客网---2016---蘑菇街搬圆桌
- redis 学习总结
- 利用Freemarker实现网页静态化的功能
- 【推荐系统】协同过滤(CF)算法详解,item-base,user-based,SVD,SVD++
- 关于sort()函数编写cmp函数
- Spring Boot之整合Mybatis
- SPI总线介绍和verilog实现
- CodeForces
- 11111