题目

有一个特殊的正方形房间,每面墙上都有一面镜子。除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2。

正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接收器 0 的距离为 q 。

返回光线最先遇到的接收器的编号(保证光线最终会遇到一个接收器)。

思路

本题若单纯依靠镜面反射的思想非常复杂难以解决问题,必须将问题转化。

1.我们假设东西两面墙无限向北拉长,将北墙暂时忽略,使得光线只有向上的反射。

2.当向上的纵距离第一次为p的整数倍时,可认为光线到达其中一个接收器。

3.通过观察画图可以发现,这个纵向距离是p和q的最小公倍数,设为s。

4.如何去判断光线遇到哪个接收器?分两步

a.首先确定是光线到达南墙还是北墙(判断s/p奇偶);

b.若是南墙(s/p为偶)直接返回接收器0;若是北墙(s/p为奇)还需确定是接受器1还是2(判断s/q奇偶);

代码

class Solution {
public:
int mirrorReflection(int p, int q) {
int s=lcm(p,q);//最小公倍数等于纵向距离
if((s/p)%2==0){//若南北次数为偶,则为南墙,0
return 0;
}
else{//为奇北墙
if((s/q%2)==1)return 1;//若东西次数为奇,则东墙,1
else return 2;//为偶西墙,2
}
}
int gcd(int a, int b){//最大公约数
return a % b ? gcd(b, a % b) : b;
}
int lcm(int a, int b){//最小公倍数
return a * b / gcd(a, b);
}
};

LeetCode 858 镜面反射的更多相关文章

  1. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  2. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 ...

  3. [LeetCode] Mirror Reflection 镜面反射

    There is a special square room with mirrors on each of the four walls.  Except for the southwest cor ...

  4. 【LeetCode】858. Mirror Reflection 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  5. LeetCode之Weekly Contest 90

    LeetCode第90场周赛记录 第一题:亲密字符串 问题: 给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true :否则返回  ...

  6. All LeetCode Questions List 题目汇总

    All LeetCode Questions List(Part of Answers, still updating) 题目汇总及部分答案(持续更新中) Leetcode problems clas ...

  7. 【LeetCode】数学(共106题)

    [2]Add Two Numbers (2018年12月23日,review) 链表的高精度加法. 题解:链表专题:https://www.cnblogs.com/zhangwanying/p/979 ...

  8. LeetCode解题报告汇总! All in One!

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 把自己刷过的所有题目做一个整理,并且用简洁的语言概括了一下思路,汇总成了一个表格. 题目 ...

  9. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

随机推荐

  1. C# 自动翻页 PPT 测试脚本

    本文告诉大家一个可以使用的 C# 脚本,可以用来自动打开 PPT 文件,然后不断执行翻页.每次翻页都截图.翻页之后自动关闭 PPT 再次打开 最近发现给 Office 做的插件,会在一定翻页次数的时候 ...

  2. 2018-10-23-使用-Pandoc-把-Markdown-转-Docx

    title author date CreateTime categories 使用 Pandoc 把 Markdown 转 Docx lindexi 2018-10-23 10:56:18 +080 ...

  3. Java 学习笔记(15)——反射

    Java中的类文件最终会被编译为.class 文件,也就是Java字节码.这个字节码中会存储Java 类的相关信息.在JVM执行这些代码时首先根据 java 命令中指定的类名找到.class 文件然后 ...

  4. dubbo rest服务(消费者) java.lang.ClassNotFoundException: org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine 错误问题

    1.版本 dubbo 2.7.3 2.描述 java.lang.ClassNotFoundException: org.jboss.resteasy.client.jaxrs.engines.Apac ...

  5. Nmap基本使用

    Nmap ​ Network Mapper ​ 一款开源免费的网络发现和安全审计工具. 用途 ​ 列举网络主机清单 ​ 监控主机或服务运行状况 ​ 管理服务升级调度 ​ 检测目标主机是否在线 ​ 检测 ...

  6. 周志华《机器学习》高清电子书pdf分享

    周志华<机器学习>高清电子书pdf下载地址 下载地址1:https://545c.com/file/20525574-415455837 下载地址2: https://pan.baidu. ...

  7. 【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差

    [题解]歌唱王国(概率生成函数+KMP)+伦讲的求方差 生成函数的本质是什么呀!为什么和It-st一样神 设\(f_i\)表示填了\(i\)个时候停下来的概率,\(g_i\)是填了\(i\)个的时候不 ...

  8. spring之第一个spring程序

    spring具体描述: 轻量级 IOC:依赖注入 AOP:面向切片编程 容器:spring是一个容器,包含并且管理应用的生命周期 框架 一站式 一.搭建spring开发环境 在eclipse中新建一个 ...

  9. background,position,绝对定位中位置属性的定位规则,cursor

    backgorund背景 background-color:red; 背景颜色 background-image:url(路径);背景图片 background-repeat:no-repeat;不重 ...

  10. 一文MyBatis-Plus快速入门

    目录 一.依赖及配置 1.在idea中创建一个SpringBoot项目,在pom.xml中添需要的依赖 2.配置数据库连接 3.在启动类中添加注解 @MapperScan 扫描Mapper接口包 4. ...