按照题目的思路模拟即可。
#include <bits/stdc++.h>
using namespace std;
在一个 n 行 m 列的矩形网格中,有一个粒子从某个格子沿对角线方向开始移动。粒子每秒移动一个格子,到达相邻的对角格子。当粒子碰到网格边界时会发生镜面反射,方向改变,参考下图:

粒子不断行进,永不停止。初始方向用长度为 2 的字符串给出,由字母 D(向下)、U(向上)、R(向右)、L(向左)组合而成,具体为 DR(右下)、DL(左下)、UR(右上)、UL(左上)之一。
给定网格大小、粒子的初始位置和初始方向,请你计算经过多少秒后粒子会首次回到初始格子(初始瞬间不计)。若粒子永远无法回到初始格子,则认为答案为 −1。
In following contests:
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册